|
5仿真币
最近做流行病模型,需要在一个网格里面放多个Agent,我查了一下API,使用OrderedMultiGrid类来构造,里面提供了一些putObjectAt(int, int, index);之类的东西。似乎可以用。但是当我编程调试的时候发现在同一位置只能获取一个对象。这是很令人纳闷的事情。我想问一下Repast有提供什么好方法处理吗,不仅要能存进去,还要能方便的拿出来。/ ~1 m6 p6 E5 x! C- R
private boolean findPotentialPartner(){
0 i: M1 M# l% j/ Z# b boolean value = false;, Y6 s" ~; a% ~# A& u6 r5 x
9 @! B; [; I7 h. m) D% G( | OrderedMulti2DGrid grid = space.getCurrentAgentSpace();
* e: F# H1 s- z8 A- d Iterator iterator = grid.getIteratorAt(x, y);
$ w6 M3 A. ~/ Z( @7 h- } SexAgent ag1 = null;
n; E. m. m$ }* |. w SexAgent [] potenAgent = new SexAgent[20];1 W+ K+ i* T9 z8 h8 ?& u$ m* d/ m
int goodNumber = 0;
' t+ Z7 m4 K4 S/ B while(iterator.hasNext()){
' d1 l, y1 E) @) Y6 r% _, V System.out.println("XXXXXXXXXXXXXXXXXXXXX");
9 x# u$ k+ u" K: h9 h0 _ ag1 = (SexAgent)iterator.next(); J3 H& L* P. z( I- b
if((ag1.sex == FEMALE) 9 D0 |2 F6 y S0 W8 o6 w
&&(!ag1.isCoupled())){
S1 ^0 ~+ x# c" V+ O System.out.println("YYYYYYYYYYYYYYYYYYYY");2 B( S4 D, R2 s& U
potenAgent[goodNumber] = ag1;: w+ R) u# R1 \) K; I# x$ R
goodNumber ++;
7 @# L& E$ e' ^3 C3 @4 a }
8 J4 Z2 q7 ~, j5 g }5 ?3 `( }# D2 N& Z+ T* Z# S
s: o" E! H5 n
if(goodNumber >0){
: z' `, `8 O% b1 T System.out.println("ZZZZZZZZZZZZZZZZZZZZZZZZZZZZ"); ' p" `% b8 m ]% i3 y+ p% u: a; ^
Random rd1 = new Random();
8 [4 {( @* h/ B int select = rd1.nextInt(goodNumber);
3 f. J6 y) D# s potentialParterner = potenAgent[select]; L! ~) q9 x" p9 g0 }. ^( F
value = true;
$ s7 |+ c( A1 `: |& A$ }0 ?0 M }9 W$ T- D% s$ @* g$ C
return value;
; B$ K- P9 H* F5 o4 r4 a+ ]$ y }
M. H0 M; v3 ?7 N) E始终只能打印出XXXXXXXXXXXXXXXXXXXX,请各位帮帮忙。 |
|