|
|
5仿真币
最近做流行病模型,需要在一个网格里面放多个Agent,我查了一下API,使用OrderedMultiGrid类来构造,里面提供了一些putObjectAt(int, int, index);之类的东西。似乎可以用。但是当我编程调试的时候发现在同一位置只能获取一个对象。这是很令人纳闷的事情。我想问一下Repast有提供什么好方法处理吗,不仅要能存进去,还要能方便的拿出来。, B0 D. w3 @0 _: o, }' d4 b
private boolean findPotentialPartner(){6 h; p' N5 M9 {5 o
boolean value = false;' m$ `& q& c( r/ f% j1 y6 I1 H2 w
5 h) n7 V- }% z: x5 j7 P
OrderedMulti2DGrid grid = space.getCurrentAgentSpace();6 V2 n" d8 G* N+ s
Iterator iterator = grid.getIteratorAt(x, y);
6 @7 P6 F) A, i3 z SexAgent ag1 = null;
+ s# }) c/ g9 Q$ l: {+ _! q SexAgent [] potenAgent = new SexAgent[20];
3 B, w5 ~0 s& _: j% q. K int goodNumber = 0;" s" H4 |) I; ~- C1 @
while(iterator.hasNext()){/ c0 p8 q0 d- |4 g5 [
System.out.println("XXXXXXXXXXXXXXXXXXXXX");
6 N6 R% V: ~9 d' {& R ag1 = (SexAgent)iterator.next();
1 w0 H, N) ^% j( J5 _ if((ag1.sex == FEMALE) ( O5 ?4 H' m: f
&&(!ag1.isCoupled())){7 E% M' }& `, i7 `; Q" P- `8 O4 A
System.out.println("YYYYYYYYYYYYYYYYYYYY");
5 {6 O+ V6 M/ R m8 J potenAgent[goodNumber] = ag1;6 Y. T; M; F0 z9 }2 E# o. [
goodNumber ++;8 u) C" F6 a) y }+ ]5 v* v1 D5 q
}
* M$ o5 P+ y4 f$ B+ t, G }
+ _- f0 G6 `5 e7 r: d0 T- T
{' L; k, M6 v; C. [. C6 i if(goodNumber >0){
- h- W+ z. B/ @# J' B W System.out.println("ZZZZZZZZZZZZZZZZZZZZZZZZZZZZ"); 2 k' a! V$ K+ K8 e7 A6 q" v
Random rd1 = new Random();) V5 b, B1 G# q5 o
int select = rd1.nextInt(goodNumber);" V0 E7 o3 \7 J/ k+ M
potentialParterner = potenAgent[select];
# l( N9 ?; z2 ~ W2 c( a7 q b' C# B3 } value = true;
( u$ u+ `6 e5 H7 P }) f5 m7 |. S) Y8 @2 _
return value; d9 {9 s7 V' d1 o6 @2 }/ {- p) L6 H
}9 a W* f J% X
始终只能打印出XXXXXXXXXXXXXXXXXXXX,请各位帮帮忙。 |
|