最近做流行病模型,需要在一个网格里面放多个Agent,我查了一下API,使用OrderedMultiGrid类来构造,里面提供了一些putObjectAt(int, int, index);之类的东西。似乎可以用。但是当我编程调试的时候发现在同一位置只能获取一个对象。这是很令人纳闷的事情。我想问一下Repast有提供什么好方法处理吗,不仅要能存进去,还要能方便的拿出来。 ( k1 D) L; v" t1 Q3 F private boolean findPotentialPartner(){& Q1 X! |3 l4 g
boolean value = false;5 n; i* ]* ?" y1 U. }# w5 M n. b
. c0 Y @# ?; l# v# H OrderedMulti2DGrid grid = space.getCurrentAgentSpace(); # x: b `$ H9 [% K0 f c Iterator iterator = grid.getIteratorAt(x, y);, e" ?. C m& `: A+ I( N. P
SexAgent ag1 = null; " T g) @* K2 v7 ^9 T1 ~ k( T/ P
SexAgent [] potenAgent = new SexAgent[20]; 3 r0 t% ], j: J: Z6 ?! c int goodNumber = 0;; x( c7 [& p# p& C& l. ]6 c7 A# m
while(iterator.hasNext()){ % h! d8 ]; L0 e System.out.println("XXXXXXXXXXXXXXXXXXXXX"); v, U9 t" {( r ag1 = (SexAgent)iterator.next(); 5 P" k6 V* }" {# o if((ag1.sex == FEMALE) / m5 f% S: Q. J4 j: u) Y &&(!ag1.isCoupled())){ ! f' ]5 H$ p1 q& S& D System.out.println("YYYYYYYYYYYYYYYYYYYY"); ) S2 s* q9 _+ E: ~2 } potenAgent[goodNumber] = ag1;! z9 q( E3 [6 A8 W7 L p4 T
goodNumber ++;$ m$ ]8 V" m2 D9 h! j R
} 9 d/ z/ x g/ V9 X1 \+ d8 v; z8 Z. [ } 7 b$ j! T5 R6 R& D D0 R& G 2 S# D2 n. Q) M
if(goodNumber >0){ + R- T/ `- X3 @3 ]( {( D$ W System.out.println("ZZZZZZZZZZZZZZZZZZZZZZZZZZZZ"); 9 l' h# S1 f$ L( @1 C
Random rd1 = new Random();; z2 D! I* `0 ?
int select = rd1.nextInt(goodNumber);( V1 d$ E4 }% _0 ?! V
potentialParterner = potenAgent[select]; 9 J7 ^3 K I( A' V7 j) x! n7 P value = true;8 R6 c6 H9 W. D+ R
}( J; |# }- X/ y8 z$ \, }( C
return value; 5 A! g! |$ m9 E8 J Z3 u# G } 3 w$ G7 K5 V5 M# s: g. |: }始终只能打印出XXXXXXXXXXXXXXXXXXXX,请各位帮帮忙。