|
5仿真币
最近做流行病模型,需要在一个网格里面放多个Agent,我查了一下API,使用OrderedMultiGrid类来构造,里面提供了一些putObjectAt(int, int, index);之类的东西。似乎可以用。但是当我编程调试的时候发现在同一位置只能获取一个对象。这是很令人纳闷的事情。我想问一下Repast有提供什么好方法处理吗,不仅要能存进去,还要能方便的拿出来。- m2 v0 v0 [ m- Y
private boolean findPotentialPartner(){
# S3 x( A; j" X6 V boolean value = false;
+ T$ `" m- `. G( S1 X0 {$ q6 ^* _
, V) a* p5 |0 ]& @' B+ I OrderedMulti2DGrid grid = space.getCurrentAgentSpace();
! I) a: e6 ]5 Y% J Iterator iterator = grid.getIteratorAt(x, y);; g& m* R* |6 }# t5 w
SexAgent ag1 = null; ; P5 A" b% f. p9 O7 n: o, x0 ]
SexAgent [] potenAgent = new SexAgent[20];: r4 r$ S8 k* k: R; L" |
int goodNumber = 0;" X& ]+ m7 M+ [) }) g$ y0 z4 X
while(iterator.hasNext()){
Y. O! e8 g* A2 C# {' q# F8 S/ m System.out.println("XXXXXXXXXXXXXXXXXXXXX");5 p. B" w& W- t
ag1 = (SexAgent)iterator.next();
/ Z% s& y3 P, g+ ] if((ag1.sex == FEMALE) ' R8 a& L5 g. M0 W3 t9 a
&&(!ag1.isCoupled())){6 k, `" y, b/ x1 |
System.out.println("YYYYYYYYYYYYYYYYYYYY");! C& a( Y. m2 @2 \
potenAgent[goodNumber] = ag1;
& k. Z1 N* ?7 z) @ goodNumber ++;
! m- N6 W/ P! ~7 z: n/ B# x }
+ }+ m5 [$ U1 ~ n }" J% m% \- s+ l) b5 A
- u) C3 Q y. }' v2 |. j$ G- h if(goodNumber >0){2 s- L- O' \0 c* e7 [$ [
System.out.println("ZZZZZZZZZZZZZZZZZZZZZZZZZZZZ"); 9 M. i* x. y2 S! N0 J% x
Random rd1 = new Random();+ l% G/ V- F( X
int select = rd1.nextInt(goodNumber);5 B. B3 q9 k+ l6 k2 w( T
potentialParterner = potenAgent[select];
; @/ Q5 N2 L+ \8 e value = true;
" p- ~9 I+ `6 ]. m6 E }/ t2 m) K/ |4 R$ D9 A$ d, |
return value;
2 g1 M. R5 I* c6 i K9 g6 u# [( N }
: s9 h9 L( v6 K6 w9 _始终只能打印出XXXXXXXXXXXXXXXXXXXX,请各位帮帮忙。 |
|