|
5仿真币
最近做流行病模型,需要在一个网格里面放多个Agent,我查了一下API,使用OrderedMultiGrid类来构造,里面提供了一些putObjectAt(int, int, index);之类的东西。似乎可以用。但是当我编程调试的时候发现在同一位置只能获取一个对象。这是很令人纳闷的事情。我想问一下Repast有提供什么好方法处理吗,不仅要能存进去,还要能方便的拿出来。: ?3 i& `' B" o$ F0 t
private boolean findPotentialPartner(){
& j v8 m+ B7 V2 Z1 s boolean value = false;! F) `& v! x$ V2 G* X
& p6 p+ \3 S8 P$ D
OrderedMulti2DGrid grid = space.getCurrentAgentSpace();
- a9 w ^! f3 E' a/ G/ z. v2 K2 \ Iterator iterator = grid.getIteratorAt(x, y);
" w+ u, o$ n! O( D @ SexAgent ag1 = null; ' a/ T1 W; D5 g& {, |- o- b
SexAgent [] potenAgent = new SexAgent[20];
6 \% L/ E9 P) }3 g# ~% E7 j$ k int goodNumber = 0;
* L8 k2 P( @$ H) i while(iterator.hasNext()){4 g" `4 w1 k- m1 {
System.out.println("XXXXXXXXXXXXXXXXXXXXX");3 v% S6 n" W1 L) V5 X
ag1 = (SexAgent)iterator.next();" M6 {4 z: X/ [# o# ^4 D( v
if((ag1.sex == FEMALE) ! q$ K7 W1 D9 D; V3 ]
&&(!ag1.isCoupled())){
; V U: \! G. d( ] System.out.println("YYYYYYYYYYYYYYYYYYYY");# M* c* v: w1 f
potenAgent[goodNumber] = ag1;
; H C! o. w: w p0 [) h goodNumber ++;
& J5 m4 G& j5 H" C }
6 Y: @1 J* p3 n3 S& q. g }
+ m/ L7 t+ _ ^! ] * Y# k# F% ~1 Y2 z. d# h* P. G
if(goodNumber >0){
* z8 `& T2 ` e+ G System.out.println("ZZZZZZZZZZZZZZZZZZZZZZZZZZZZ"); 4 m- \4 [4 w+ e* x( y$ q
Random rd1 = new Random();
5 k6 I8 S, d5 `6 O3 n( r" v1 Z! F' t int select = rd1.nextInt(goodNumber);
) j# u3 L6 \# j: r1 }! v4 ]6 l potentialParterner = potenAgent[select];% f( v7 Z# M: h. E" z- w& e4 \
value = true;
# Y. P" ~$ s, L3 l( w8 Q }
: _9 z( _- E0 c6 M return value;1 U# U. T6 z! V
}; I( C& r# |: s- |9 o3 ~
始终只能打印出XXXXXXXXXXXXXXXXXXXX,请各位帮帮忙。 |
|