|
|
5仿真币
最近做流行病模型,需要在一个网格里面放多个Agent,我查了一下API,使用OrderedMultiGrid类来构造,里面提供了一些putObjectAt(int, int, index);之类的东西。似乎可以用。但是当我编程调试的时候发现在同一位置只能获取一个对象。这是很令人纳闷的事情。我想问一下Repast有提供什么好方法处理吗,不仅要能存进去,还要能方便的拿出来。
* P2 C* j/ b- T private boolean findPotentialPartner(){
0 T& b1 p% c* J6 F7 F7 V) V# o Y boolean value = false;
3 d/ A7 o* V3 n" I7 o1 R `0 z + f b0 x: D" D0 s- P/ T
OrderedMulti2DGrid grid = space.getCurrentAgentSpace();
. F L. _3 |6 m! K/ R1 n Iterator iterator = grid.getIteratorAt(x, y);3 P: f4 S1 b* `9 d( g
SexAgent ag1 = null; 1 s, ]+ C7 {% r, v+ ~+ j
SexAgent [] potenAgent = new SexAgent[20];
c) C- w. L# ] int goodNumber = 0;& _7 C7 k* z3 D6 m. |2 |1 V& V
while(iterator.hasNext()){
$ F, ?( y/ ?/ I. A- O. q System.out.println("XXXXXXXXXXXXXXXXXXXXX"); O0 Q: G8 h% v' ^) A+ ^
ag1 = (SexAgent)iterator.next();. i& O& B( K, w# x% q% c
if((ag1.sex == FEMALE)
# W* E. c; Z, ]8 |) Q$ ^ &&(!ag1.isCoupled())){+ n7 B& x& S6 \ \; _
System.out.println("YYYYYYYYYYYYYYYYYYYY"); W' |: C2 \: F; X1 {, h+ y
potenAgent[goodNumber] = ag1;
0 x, H* `1 o0 p$ p goodNumber ++;/ q3 P; n' h; R+ t; U
}
6 n+ ~) F6 _2 V3 W }
+ ^) N$ B, Z/ G - I) s6 H- Q- w: i& j- L; c
if(goodNumber >0){$ |. z2 |# o4 H5 E! t9 R; I
System.out.println("ZZZZZZZZZZZZZZZZZZZZZZZZZZZZ"); - L8 v' J! \, p4 V* U) V" L
Random rd1 = new Random();4 z9 @8 F' v. T( V2 u) Z6 J# D0 }7 `
int select = rd1.nextInt(goodNumber);1 [- X0 R ]4 W8 g5 p
potentialParterner = potenAgent[select];
8 b7 U& g9 F; B* z, J+ s value = true;! n2 f, i2 r4 N4 f6 M6 a: V9 a
}+ k y' f/ E7 _- W; V
return value;* A: {, g6 L8 @8 V$ W
}7 D; u! m. F& w
始终只能打印出XXXXXXXXXXXXXXXXXXXX,请各位帮帮忙。 |
|