最近做流行病模型,需要在一个网格里面放多个Agent,我查了一下API,使用OrderedMultiGrid类来构造,里面提供了一些putObjectAt(int, int, index);之类的东西。似乎可以用。但是当我编程调试的时候发现在同一位置只能获取一个对象。这是很令人纳闷的事情。我想问一下Repast有提供什么好方法处理吗,不仅要能存进去,还要能方便的拿出来。 " o& u. ^/ t9 U) `. o' N private boolean findPotentialPartner(){# t# M" f/ @/ ]9 n: ~4 v; B4 B" d
boolean value = false;5 a9 L- X$ V# Q+ O! @ G
$ q9 @/ D! u( q1 Z! k4 u: t- c
OrderedMulti2DGrid grid = space.getCurrentAgentSpace(); ) J5 \5 r r! w# X; e/ B' ] b4 y Iterator iterator = grid.getIteratorAt(x, y);" L7 m( c5 V+ p. d' G3 }* x
SexAgent ag1 = null; 6 F3 \% _& u/ e4 e' U1 r
SexAgent [] potenAgent = new SexAgent[20]; 1 V/ ^7 K! s8 ] int goodNumber = 0; / D9 S$ U2 O) F% l. C, N while(iterator.hasNext()){7 r+ A2 F% o9 B6 B# `1 Q
System.out.println("XXXXXXXXXXXXXXXXXXXXX");) a- U# f3 n9 ]3 A; \
ag1 = (SexAgent)iterator.next(); 9 h7 n- J- W& T7 ~ if((ag1.sex == FEMALE) / t9 U/ e0 X" Z
&&(!ag1.isCoupled())){ & p" O- Z% G4 ~1 Y1 Z8 l& i2 e System.out.println("YYYYYYYYYYYYYYYYYYYY"); 3 D X( I* v- d/ l9 i3 a potenAgent[goodNumber] = ag1; , Y0 B( Z5 }- z0 z2 I- c& H goodNumber ++; z/ |9 w- a0 G( n, ?% }
} 3 B1 o" Y9 m" m6 _+ {3 t }" A8 ^7 e7 G% u; [+ ]3 V
' ]' W. L' B. D( y Z if(goodNumber >0){ $ _7 j1 g( L1 k% D1 S1 } System.out.println("ZZZZZZZZZZZZZZZZZZZZZZZZZZZZ"); 3 y R" C- a5 u. A
Random rd1 = new Random();( z e* t9 @0 [% f
int select = rd1.nextInt(goodNumber);/ Q& A# {8 [4 q. a" f
potentialParterner = potenAgent[select];, L, Z; k$ y3 d2 `+ \) X
value = true;9 {& K! l0 I; i
} ; l$ ~1 s# [9 ^5 K% Z return value;; t t8 \( R- P! m5 @
}. d% d! C" |8 h, Z
始终只能打印出XXXXXXXXXXXXXXXXXXXX,请各位帮帮忙。