|
|
5仿真币
最近做流行病模型,需要在一个网格里面放多个Agent,我查了一下API,使用OrderedMultiGrid类来构造,里面提供了一些putObjectAt(int, int, index);之类的东西。似乎可以用。但是当我编程调试的时候发现在同一位置只能获取一个对象。这是很令人纳闷的事情。我想问一下Repast有提供什么好方法处理吗,不仅要能存进去,还要能方便的拿出来。
* W& C% v& h, T$ R+ y* S5 T private boolean findPotentialPartner(){. z3 C/ n8 e5 Q
boolean value = false;
: c0 g, r/ p. y ) r. I$ ?5 b) `8 e
OrderedMulti2DGrid grid = space.getCurrentAgentSpace();- o! v, V8 d7 F& Y/ w
Iterator iterator = grid.getIteratorAt(x, y);
6 \4 H ^( W6 g5 v8 i7 w/ L) x SexAgent ag1 = null;
) v9 r% o) f9 [6 R SexAgent [] potenAgent = new SexAgent[20];8 p/ ? b! s; |5 q
int goodNumber = 0;7 s% m: F/ e1 ?& z: I
while(iterator.hasNext()){
+ `, [( x; \) b+ y) y% u System.out.println("XXXXXXXXXXXXXXXXXXXXX");
+ l- M/ Z8 |; h8 Y ag1 = (SexAgent)iterator.next();
- R7 U/ v8 W, b9 q if((ag1.sex == FEMALE) $ o: y* \8 Q0 L# y4 ~ o" o: S
&&(!ag1.isCoupled())){/ d' D- P, p$ D3 H
System.out.println("YYYYYYYYYYYYYYYYYYYY");
' d; B+ U8 H3 {" V" B& x& m potenAgent[goodNumber] = ag1;
4 s, T. F' c% K5 d* o$ E" p goodNumber ++;
3 a1 j8 x, q! Q( y1 ], z9 T' R+ @# R }
& G; Y* [8 G* l) H; A }
4 @+ o5 F& ]; \( r" u ~ & R. g; j! I: ?" }2 X# u6 L$ p( x4 L$ u
if(goodNumber >0){) J# x- \3 p) f4 V% q# p9 {
System.out.println("ZZZZZZZZZZZZZZZZZZZZZZZZZZZZ"); / |0 A4 E5 d' `- Y: o7 D
Random rd1 = new Random();
3 |- |* M" z V! U9 l% e% S int select = rd1.nextInt(goodNumber);
1 t9 M- g% Y; ?) M* A potentialParterner = potenAgent[select];
3 [( \' X, M* \8 P* |3 I3 O value = true;5 P! Z: {) ? {$ D
}) B! w% A+ u* D1 b5 o4 R- j1 y1 D
return value;
+ A0 B2 j% u. q+ u" l- j' F; L }9 z6 u+ G* B! M
始终只能打印出XXXXXXXXXXXXXXXXXXXX,请各位帮帮忙。 |
|