|
|
5仿真币
最近做流行病模型,需要在一个网格里面放多个Agent,我查了一下API,使用OrderedMultiGrid类来构造,里面提供了一些putObjectAt(int, int, index);之类的东西。似乎可以用。但是当我编程调试的时候发现在同一位置只能获取一个对象。这是很令人纳闷的事情。我想问一下Repast有提供什么好方法处理吗,不仅要能存进去,还要能方便的拿出来。
, E# I/ h- J# ~ W private boolean findPotentialPartner(){" v, E5 u3 T* e, h$ K5 B
boolean value = false;/ O" u- P9 n% z5 L7 U# E, A
1 U0 o& f* o' F OrderedMulti2DGrid grid = space.getCurrentAgentSpace();
) D1 G2 [: J" C$ C Iterator iterator = grid.getIteratorAt(x, y);; ]! C5 F R8 ^) U5 z
SexAgent ag1 = null;
, B# j/ Q0 \( Z% h v SexAgent [] potenAgent = new SexAgent[20];9 x# y$ J+ s( ]+ i3 [2 X5 U
int goodNumber = 0;+ l z3 p' h1 b/ I
while(iterator.hasNext()){8 P6 X* a8 U4 K' t3 |3 @
System.out.println("XXXXXXXXXXXXXXXXXXXXX");
, v4 i5 h5 o/ k% ^ ag1 = (SexAgent)iterator.next();
7 Z- _/ d3 X {! S1 l. S if((ag1.sex == FEMALE)
, f+ h/ a# O% r2 m: J &&(!ag1.isCoupled())){
6 A$ Y( ?9 N6 B0 m0 E7 t System.out.println("YYYYYYYYYYYYYYYYYYYY");; R b, E6 [# I/ a, \ Z
potenAgent[goodNumber] = ag1;' w" `+ m* Z( h! q/ R( z
goodNumber ++;
4 J7 y s5 M' P) J) p }
9 N, Y; K, @# N" |8 J- w" ]* c) u) e }% }2 H9 K7 S$ i* J& _2 j
B) L9 T" m' j7 Q! o z2 S2 ^5 L5 q if(goodNumber >0){
1 L1 @" f1 g3 @ System.out.println("ZZZZZZZZZZZZZZZZZZZZZZZZZZZZ");
7 l! ]( `( y. v; F9 l& I7 V/ t* x Random rd1 = new Random();
9 t g' J1 P; T4 t1 F) i9 | int select = rd1.nextInt(goodNumber);- c1 Y) t A7 s/ ^# Q
potentialParterner = potenAgent[select];
6 ~1 N: b8 {+ K value = true;* l4 a- x' E* p7 i, v. t% X1 ~" u
}9 N) B! Q$ Z! b* H
return value;4 M3 h0 |3 z: c9 Z
}
3 _2 ]% |: `/ ^# R3 j, h/ r( y始终只能打印出XXXXXXXXXXXXXXXXXXXX,请各位帮帮忙。 |
|