|
|
5仿真币
最近做流行病模型,需要在一个网格里面放多个Agent,我查了一下API,使用OrderedMultiGrid类来构造,里面提供了一些putObjectAt(int, int, index);之类的东西。似乎可以用。但是当我编程调试的时候发现在同一位置只能获取一个对象。这是很令人纳闷的事情。我想问一下Repast有提供什么好方法处理吗,不仅要能存进去,还要能方便的拿出来。
" d1 h0 G: o4 D* k private boolean findPotentialPartner(){4 X/ l6 I8 z: E4 N6 p
boolean value = false;' o8 E ?, x" }2 g" r+ u4 U3 N$ l7 u
. X! M3 h" y5 g
OrderedMulti2DGrid grid = space.getCurrentAgentSpace();9 K2 C$ H4 |% C7 w8 x
Iterator iterator = grid.getIteratorAt(x, y); h- Y8 p% h& J$ G2 T
SexAgent ag1 = null;
: w& C& [( y( ~/ Z! u! z SexAgent [] potenAgent = new SexAgent[20];' p1 o8 e/ n5 N z& L% p- c
int goodNumber = 0;
4 k0 H$ B4 x" u C3 j } while(iterator.hasNext()){& q# b) d9 K) f6 Q: e& w
System.out.println("XXXXXXXXXXXXXXXXXXXXX");
+ k8 J& r8 Y) j) ?& w ag1 = (SexAgent)iterator.next();! z7 p) e/ {7 H2 Q7 K. b
if((ag1.sex == FEMALE)
/ z; _) c! ^4 h+ N% S! X0 G% Y &&(!ag1.isCoupled())){
2 Q) K) D2 [0 {% m* e System.out.println("YYYYYYYYYYYYYYYYYYYY");
, K0 |, d$ Z1 x$ J6 a: {$ Q potenAgent[goodNumber] = ag1;
9 k1 R9 h* `0 C5 w; W- Z) K2 G$ f2 d% R goodNumber ++;
+ t# M; ]) h6 E! u9 V8 E1 s3 h$ I }0 b/ h# x, }" h8 P; e0 m Q/ }
}
# z9 [; }' ^& ~, ]3 ? 9 k7 E/ V1 H0 J. C! R' U' ~1 p6 t
if(goodNumber >0){. z9 s2 L o- U/ S& z: I
System.out.println("ZZZZZZZZZZZZZZZZZZZZZZZZZZZZ");
3 O# x& @9 K9 m# w Random rd1 = new Random();
, G. B; m6 ^- j; ^1 D6 G/ I int select = rd1.nextInt(goodNumber);0 q1 Y' Q. ? N( x6 d
potentialParterner = potenAgent[select];
! z$ C& l! U0 ]+ s value = true;/ a: C# L2 u" T3 [* M2 L
}# n+ H0 c* ^6 p T
return value;
8 o4 R5 U0 t( c; r }
& h: k5 b3 e: C7 {' T始终只能打印出XXXXXXXXXXXXXXXXXXXX,请各位帮帮忙。 |
|