|
|
5仿真币
最近做流行病模型,需要在一个网格里面放多个Agent,我查了一下API,使用OrderedMultiGrid类来构造,里面提供了一些putObjectAt(int, int, index);之类的东西。似乎可以用。但是当我编程调试的时候发现在同一位置只能获取一个对象。这是很令人纳闷的事情。我想问一下Repast有提供什么好方法处理吗,不仅要能存进去,还要能方便的拿出来。
' H$ r9 o1 a% }% I& }; ]. u private boolean findPotentialPartner(){
% [6 e7 l* |2 b& `( w boolean value = false;
4 n+ Q* q* G, @6 [' ^: ?! V5 g- ?
/ @' i: s2 K9 C OrderedMulti2DGrid grid = space.getCurrentAgentSpace();
, w9 |; T# F% M, N b5 Y f E( c& Y Iterator iterator = grid.getIteratorAt(x, y);% ?: t& F9 x/ f% @+ e8 J6 S E& Q
SexAgent ag1 = null; ( E: O$ ]* T5 i2 d: p
SexAgent [] potenAgent = new SexAgent[20];
' t! w1 ^# E$ j N4 u- c7 r9 a int goodNumber = 0;
& d- G, g8 n/ k$ b" |8 S5 W while(iterator.hasNext()){
% Y% z% V- s0 c( i! d System.out.println("XXXXXXXXXXXXXXXXXXXXX");
3 K4 B% L. @3 U0 s7 ^6 e ag1 = (SexAgent)iterator.next();
' N. |& z- ^' X8 M1 q! h( T if((ag1.sex == FEMALE) - I+ Q+ n# Y7 U9 Z% Y8 {8 |0 @
&&(!ag1.isCoupled())){3 h) N" T+ M8 Q" y( s( t
System.out.println("YYYYYYYYYYYYYYYYYYYY");
4 I4 @' `- A! C: }- M/ H6 U potenAgent[goodNumber] = ag1;' {; @, D7 w0 [: U
goodNumber ++;
+ w4 ?! O9 E# d: h9 O }
: O- E) e, g" s7 Q: E$ | }1 n2 |; t6 d$ R
9 E) K7 e& q' m6 l1 h4 ] if(goodNumber >0){6 p& k1 R9 i" h h9 I
System.out.println("ZZZZZZZZZZZZZZZZZZZZZZZZZZZZ");
4 d7 h4 P( U) ^+ T% r Random rd1 = new Random();
, ]) d. [% X4 j0 g int select = rd1.nextInt(goodNumber);, X( O ?5 s- U+ G0 W+ f6 w
potentialParterner = potenAgent[select];
5 K' y; a) c/ M0 w! s; [ value = true;1 n. N% k G6 M0 @
}
) Z+ v) F: z5 e+ m' D return value;) E2 m! e) E3 p& F4 _! w! @
}+ l L: G: R8 U; b$ C4 L( Q$ M. P% \1 E
始终只能打印出XXXXXXXXXXXXXXXXXXXX,请各位帮帮忙。 |
|