最近做流行病模型,需要在一个网格里面放多个Agent,我查了一下API,使用OrderedMultiGrid类来构造,里面提供了一些putObjectAt(int, int, index);之类的东西。似乎可以用。但是当我编程调试的时候发现在同一位置只能获取一个对象。这是很令人纳闷的事情。我想问一下Repast有提供什么好方法处理吗,不仅要能存进去,还要能方便的拿出来。5 ]) a4 z4 k3 y+ q( N T
private boolean findPotentialPartner(){4 T" _ q% K- }- ]: ` T3 R W
boolean value = false; ! @3 ^: V+ Q% f2 f" r' R& Q$ {; ~ $ ^5 L. o7 ~/ }& V5 }: L! e5 r OrderedMulti2DGrid grid = space.getCurrentAgentSpace(); " W5 K$ B0 ]$ g. c9 u6 W5 ?$ V8 O Iterator iterator = grid.getIteratorAt(x, y);- D* B/ s; A$ G
SexAgent ag1 = null; 2 n/ I; m/ J1 s$ d SexAgent [] potenAgent = new SexAgent[20]; 5 | c) W7 y8 Q% Q$ `3 G& ?" ?/ F int goodNumber = 0; ) V, _. s/ ?& b, W' Q while(iterator.hasNext()){, \1 y$ k* N) {
System.out.println("XXXXXXXXXXXXXXXXXXXXX");; J8 B- L9 b& N9 r
ag1 = (SexAgent)iterator.next(); ( g" W7 `3 ~5 Y; _% z+ m! P& _ if((ag1.sex == FEMALE) ) {' B' \5 m' H3 q) J ]
&&(!ag1.isCoupled())){ / |* H+ G( b' u% r1 K9 h) `7 N2 x. Q System.out.println("YYYYYYYYYYYYYYYYYYYY"); ) ~( C$ V( S! r& v! r; R potenAgent[goodNumber] = ag1; ) j: V& a% j' X* L: a goodNumber ++;) ?+ ]$ l2 l9 V0 N6 p/ D# p+ U
}: r# V6 z+ W3 ~) W# h1 `
}1 V7 ?3 b* m0 q2 o1 t- f
6 B1 Q2 J/ D! L& Q: \ if(goodNumber >0){ ( h6 m) J5 {: ]0 p6 A1 z% T5 x: } System.out.println("ZZZZZZZZZZZZZZZZZZZZZZZZZZZZ"); C) v: I( A) Z: m) M5 s# K Random rd1 = new Random();$ F4 D' g, y. ?1 _) E' k
int select = rd1.nextInt(goodNumber); 9 a I- B. `; F1 V9 G/ c! o- { potentialParterner = potenAgent[select];. b2 L7 Y$ y$ v
value = true; / j0 a' P# }: |5 ] }4 x+ u- A; p' {8 }8 f \- K2 T
return value; + ^0 Q9 C$ P2 _+ t }9 j) S. A1 M" ~4 L# T
始终只能打印出XXXXXXXXXXXXXXXXXXXX,请各位帮帮忙。