最近做流行病模型,需要在一个网格里面放多个Agent,我查了一下API,使用OrderedMultiGrid类来构造,里面提供了一些putObjectAt(int, int, index);之类的东西。似乎可以用。但是当我编程调试的时候发现在同一位置只能获取一个对象。这是很令人纳闷的事情。我想问一下Repast有提供什么好方法处理吗,不仅要能存进去,还要能方便的拿出来。3 P }6 U9 Z+ ~: t2 I9 Z* Y
private boolean findPotentialPartner(){5 }: i J K$ C) A4 b
boolean value = false;% _, s- `* c7 h1 M
! }7 g) U" y, I9 j* T OrderedMulti2DGrid grid = space.getCurrentAgentSpace(); ) {6 N- T9 f3 {# [ Iterator iterator = grid.getIteratorAt(x, y);0 s, E7 a$ U1 J% m( q
SexAgent ag1 = null; 1 S4 ]5 \( [4 k; ^, _! ^
SexAgent [] potenAgent = new SexAgent[20]; 0 b/ A% @& c9 n R int goodNumber = 0; % f$ K: Y. k' N) I4 g7 b while(iterator.hasNext()){+ |0 U8 x6 v/ a0 z
System.out.println("XXXXXXXXXXXXXXXXXXXXX");3 Y5 g& U) v C) T q! _
ag1 = (SexAgent)iterator.next();/ u! E& b; V+ B8 ^6 g% h
if((ag1.sex == FEMALE) 4 o9 ^4 C" @2 t* H
&&(!ag1.isCoupled())){ q# R4 s$ B; i# g; d3 r5 U System.out.println("YYYYYYYYYYYYYYYYYYYY");; ?" b4 H! R! M4 V/ |, a
potenAgent[goodNumber] = ag1;; s3 T1 X8 s4 L. S
goodNumber ++; + z. r+ T& Y7 e' k. v) U, {8 i+ b }/ w/ ~0 E$ b3 @* J
}- A) e! c& R, }. @$ i- `
# q+ R. `7 ?8 ~$ W
if(goodNumber >0){ & w! m: o8 k5 v G: j System.out.println("ZZZZZZZZZZZZZZZZZZZZZZZZZZZZ"); * c: c- j# m3 ^4 _. i
Random rd1 = new Random();# o. n* A- T) p' L/ q* C% P2 m
int select = rd1.nextInt(goodNumber); : m7 j9 R; N9 v& k potentialParterner = potenAgent[select]; / a, \) D( U8 J# x+ r value = true;7 ?: x4 y9 L" Y6 j5 ~/ A. u
}+ z3 H. a# m9 I- i3 J0 \ L9 S6 r/ ^
return value; 2 u1 k; t. C/ H. p } ; E: ]4 Y# ]7 e9 ^, F* I9 D3 e; h9 a始终只能打印出XXXXXXXXXXXXXXXXXXXX,请各位帮帮忙。