|
|
5仿真币
最近做流行病模型,需要在一个网格里面放多个Agent,我查了一下API,使用OrderedMultiGrid类来构造,里面提供了一些putObjectAt(int, int, index);之类的东西。似乎可以用。但是当我编程调试的时候发现在同一位置只能获取一个对象。这是很令人纳闷的事情。我想问一下Repast有提供什么好方法处理吗,不仅要能存进去,还要能方便的拿出来。 _, t6 z' z D3 E& ]; I3 K+ o1 U
private boolean findPotentialPartner(){' r& ]5 f# _! l" Z) U
boolean value = false;
+ a- Q9 Y' [: {& Q9 A2 I- a ( ]9 k9 `7 L8 m! d% O
OrderedMulti2DGrid grid = space.getCurrentAgentSpace();) s4 m: a; S" d( ^+ m
Iterator iterator = grid.getIteratorAt(x, y);
& C2 x" s; |$ t0 w. h7 Z+ H SexAgent ag1 = null;
5 d4 I7 Y# r# U7 q, Z1 M SexAgent [] potenAgent = new SexAgent[20];( M( J+ s8 s! W: `
int goodNumber = 0;$ |% d8 ~; X3 |: L! y
while(iterator.hasNext()){
8 L) i1 K& }% ^ System.out.println("XXXXXXXXXXXXXXXXXXXXX");
4 `$ S* ]( y, x ag1 = (SexAgent)iterator.next();
( i5 x; H. s- a% D" F: v* I% q if((ag1.sex == FEMALE) 8 s. ?9 K- j3 a v" U- B T1 u
&&(!ag1.isCoupled())){. ?1 P; ]; b( \4 P0 z1 Z1 R
System.out.println("YYYYYYYYYYYYYYYYYYYY");
! J+ {3 h* \4 Y) ?5 y; U3 k potenAgent[goodNumber] = ag1;
* C* x5 k+ q7 A% k7 L goodNumber ++;, G' v( |7 G9 b* v3 M, T
}
( ]( n( y: f: x- t }, h4 P+ a6 F; F1 y: j0 T& H
: P. g6 x6 H7 L: G' E& `2 D if(goodNumber >0){
' ?5 U1 P7 p/ H9 ? System.out.println("ZZZZZZZZZZZZZZZZZZZZZZZZZZZZ");
* Q, X0 m0 }9 q# J9 v Random rd1 = new Random();% j; i# X0 a2 @# M r
int select = rd1.nextInt(goodNumber);
6 U0 q7 `8 ^3 `! m) K potentialParterner = potenAgent[select];$ u; `' g. v" R! ~" ~
value = true;
0 I" ]. k1 p" ~ [ }8 _+ b M3 Y9 l9 K6 ^4 V. A
return value;- E5 }/ b0 _6 {3 v& n6 ~7 I7 I
}* x+ n6 P* [# _8 G( A( G! b
始终只能打印出XXXXXXXXXXXXXXXXXXXX,请各位帮帮忙。 |
|