|
|
5仿真币
最近做流行病模型,需要在一个网格里面放多个Agent,我查了一下API,使用OrderedMultiGrid类来构造,里面提供了一些putObjectAt(int, int, index);之类的东西。似乎可以用。但是当我编程调试的时候发现在同一位置只能获取一个对象。这是很令人纳闷的事情。我想问一下Repast有提供什么好方法处理吗,不仅要能存进去,还要能方便的拿出来。
1 _7 z' R- _: T! r" b private boolean findPotentialPartner(){0 ~7 ^8 o* ^8 W. y' Y
boolean value = false;6 V0 m* \2 @( u, w; m: Q
0 U- A7 [0 N- @& L! ^ OrderedMulti2DGrid grid = space.getCurrentAgentSpace();! Q. B ^; u. S" }9 ~% t
Iterator iterator = grid.getIteratorAt(x, y);. |7 n3 r2 z" K. R. | b, j2 B
SexAgent ag1 = null;
" o4 l- @* E- u! d1 Q0 r SexAgent [] potenAgent = new SexAgent[20];
! S C6 g5 J( a: ` int goodNumber = 0;4 r0 T6 W' U; _/ b9 l' k+ @! N
while(iterator.hasNext()){' {/ @# W* b1 {. ~
System.out.println("XXXXXXXXXXXXXXXXXXXXX");1 ~0 Z w" |. _# P' o( k/ C$ b
ag1 = (SexAgent)iterator.next();( @ S0 j5 Z2 `# }
if((ag1.sex == FEMALE)
' W0 C3 G+ W: B. p &&(!ag1.isCoupled())){7 U( c0 a: z/ X4 g2 G
System.out.println("YYYYYYYYYYYYYYYYYYYY");9 L$ A+ H% f4 g4 C z
potenAgent[goodNumber] = ag1;
, L) t, g% t" N7 K, \8 I: r. q goodNumber ++;
7 Q* R$ `8 a7 m( c }& p7 G" T% v0 N3 O0 B$ M' _* }
}& ]# \. C* f) h* u" |( Q
: T. ?% ~5 b1 } F! H
if(goodNumber >0){
5 _ A" D4 V) y% W$ ~$ i System.out.println("ZZZZZZZZZZZZZZZZZZZZZZZZZZZZ");
- N* O8 I6 l7 L# F" g Random rd1 = new Random();
; p8 Z. y- _3 k# K int select = rd1.nextInt(goodNumber);6 U1 S) `( q6 F e( E, D$ X
potentialParterner = potenAgent[select];% C. P4 {% I0 K
value = true;. E1 n% a+ s8 w; l
}
/ Z% {& ]2 P4 v# u0 X% J2 l return value;
) F% _% j" j% n$ g6 | }7 J9 p3 }5 H+ J7 I2 B. c6 H4 W
始终只能打印出XXXXXXXXXXXXXXXXXXXX,请各位帮帮忙。 |
|