|
5仿真币
最近做流行病模型,需要在一个网格里面放多个Agent,我查了一下API,使用OrderedMultiGrid类来构造,里面提供了一些putObjectAt(int, int, index);之类的东西。似乎可以用。但是当我编程调试的时候发现在同一位置只能获取一个对象。这是很令人纳闷的事情。我想问一下Repast有提供什么好方法处理吗,不仅要能存进去,还要能方便的拿出来。' b9 b* Y& j7 M' e+ g" N
private boolean findPotentialPartner(){/ j# N) T. l# b( i/ U0 r
boolean value = false;& Y7 E4 h. h M1 s! D: i/ g! A
0 V9 U/ `* a d2 E OrderedMulti2DGrid grid = space.getCurrentAgentSpace();3 [6 g+ s. {4 t7 K. B1 w, l
Iterator iterator = grid.getIteratorAt(x, y);
$ ]9 b; l5 l$ b" h SexAgent ag1 = null;
) ]/ b0 V& B2 x8 q9 ` SexAgent [] potenAgent = new SexAgent[20];
8 V0 r0 k p4 E% a# M int goodNumber = 0;6 P. F0 F1 b8 E' j
while(iterator.hasNext()){9 c% Q; M* u, u, v
System.out.println("XXXXXXXXXXXXXXXXXXXXX");
4 Y1 Z' ^% L' c! I6 m ag1 = (SexAgent)iterator.next();: T3 B0 L" s! S) C2 z0 P* ?% D0 y' |' D
if((ag1.sex == FEMALE) 3 @1 C/ E6 X' ~' {# T8 I
&&(!ag1.isCoupled())){5 w' q+ |. c- Z
System.out.println("YYYYYYYYYYYYYYYYYYYY");
) {0 X7 u/ |$ R" j: ]4 G: z potenAgent[goodNumber] = ag1;. e" B0 h0 S9 x, O: y; a
goodNumber ++;
" d" U3 x! H8 D, L* A2 W) n# t }
) |, M% S6 ], I0 F7 { }
3 K2 I4 j9 d/ \, E
2 _: ?4 ~! b" o* i( I! K if(goodNumber >0){
2 y Q1 d' |1 o4 ^" M/ D& {- T System.out.println("ZZZZZZZZZZZZZZZZZZZZZZZZZZZZ"); ( O1 r1 x" ?9 x
Random rd1 = new Random();
, |0 u, D4 c. V4 i+ S0 E9 X1 K( u int select = rd1.nextInt(goodNumber);' l1 w- c! m+ T' R/ O6 I% Z
potentialParterner = potenAgent[select];
# e) y2 P) G$ N- @8 A0 O0 v+ u value = true;
2 K0 ?& Q; q5 X$ j% ` }
) a: H w) O* t1 F return value; h) ~- @( t# ]* U
}
, a( V6 Y+ R' ^# ?; L始终只能打印出XXXXXXXXXXXXXXXXXXXX,请各位帮帮忙。 |
|