|
5仿真币
最近做流行病模型,需要在一个网格里面放多个Agent,我查了一下API,使用OrderedMultiGrid类来构造,里面提供了一些putObjectAt(int, int, index);之类的东西。似乎可以用。但是当我编程调试的时候发现在同一位置只能获取一个对象。这是很令人纳闷的事情。我想问一下Repast有提供什么好方法处理吗,不仅要能存进去,还要能方便的拿出来。
: H, W# Y7 A- a0 a. f1 @ private boolean findPotentialPartner(){
& J0 u* l g* g/ _3 P1 @0 { boolean value = false;
2 P b5 P" A E5 H 3 x- R& {1 A. E0 a# e! N
OrderedMulti2DGrid grid = space.getCurrentAgentSpace();
, W9 P6 E( {. r) ~- Q* G Iterator iterator = grid.getIteratorAt(x, y);
2 s2 R* I2 h4 ]7 C4 T SexAgent ag1 = null;
$ O7 `4 {! v1 G, ` SexAgent [] potenAgent = new SexAgent[20];
' B7 c) U( w' U3 N int goodNumber = 0;- Z: q @! W5 c0 O8 n% D; Z
while(iterator.hasNext()){
. ^& z8 g$ W* S0 Z9 }3 b/ P System.out.println("XXXXXXXXXXXXXXXXXXXXX");
. |* V& k9 v5 T) S+ e2 B7 y ag1 = (SexAgent)iterator.next();; y7 H* h& k( d8 o# J" I
if((ag1.sex == FEMALE) / H" i! m$ z- i9 O) b. W
&&(!ag1.isCoupled())){2 m r3 M) u* l3 i4 j$ y
System.out.println("YYYYYYYYYYYYYYYYYYYY");" h/ h4 t9 e1 z' g; S/ ^
potenAgent[goodNumber] = ag1;
/ T5 U5 b" B. e goodNumber ++;
8 _7 o* D& E1 w }
$ j6 ]8 J a- `1 v! m: b5 k5 { }
3 n2 _7 C2 X: {4 m) ?
V& \+ j3 E% V6 ] if(goodNumber >0){
& g' s2 h; C: Z; Q7 Z7 B System.out.println("ZZZZZZZZZZZZZZZZZZZZZZZZZZZZ");
$ r) `+ ^$ S. U- G: I2 d1 ? Random rd1 = new Random();
3 Q+ D' O) H$ X; \ int select = rd1.nextInt(goodNumber);* ]4 [5 _( U6 n8 E( h; N' V
potentialParterner = potenAgent[select];6 {: s8 K* q) w$ ?: b
value = true;& _* t7 Y* [( Q% _9 i2 ?
}) Y1 v4 N$ X7 G$ ? T
return value;7 w% U- F% b" g
}) g0 E5 k/ O+ }; V1 F5 s
始终只能打印出XXXXXXXXXXXXXXXXXXXX,请各位帮帮忙。 |
|