最近做流行病模型,需要在一个网格里面放多个Agent,我查了一下API,使用OrderedMultiGrid类来构造,里面提供了一些putObjectAt(int, int, index);之类的东西。似乎可以用。但是当我编程调试的时候发现在同一位置只能获取一个对象。这是很令人纳闷的事情。我想问一下Repast有提供什么好方法处理吗,不仅要能存进去,还要能方便的拿出来。: |0 z. b7 F2 Z3 N
private boolean findPotentialPartner(){9 W" _6 T3 K6 X3 v/ D. r
boolean value = false;+ R8 K( S3 {3 M; {* G s
4 f2 N" }+ D, c2 H7 h7 z OrderedMulti2DGrid grid = space.getCurrentAgentSpace(); 0 A5 y2 f2 A7 j2 N3 r0 \$ U Iterator iterator = grid.getIteratorAt(x, y);: D6 M/ V5 T& ~; k) v7 H
SexAgent ag1 = null; " O1 J6 D" N* A' Y1 J% Z
SexAgent [] potenAgent = new SexAgent[20];& {' D& r+ q% i4 F: e; z
int goodNumber = 0; 4 j; E. {" }9 ?" U, m$ z: S while(iterator.hasNext()){6 D# j' x3 Q. c' [
System.out.println("XXXXXXXXXXXXXXXXXXXXX"); ' r8 ~( g% d& W/ R ag1 = (SexAgent)iterator.next();; W% [+ S. _! ^) x2 J
if((ag1.sex == FEMALE) * X. C+ g# k* O1 D &&(!ag1.isCoupled())){ & f" i! c9 \( v( G: N System.out.println("YYYYYYYYYYYYYYYYYYYY");! Q8 }, b/ W) | x% a2 \) Z
potenAgent[goodNumber] = ag1;4 s8 @1 Q5 L9 F* [, R; q# a
goodNumber ++; ; b& A! p( X4 v8 u8 [ }8 ~# G8 _0 H/ U8 x `- N9 G
} $ A k0 i1 J4 T; n& T , _, k& Z+ H8 n7 b! ]1 {; k if(goodNumber >0){ " z/ G: _& N: S% _; @# M% |) L d System.out.println("ZZZZZZZZZZZZZZZZZZZZZZZZZZZZ"); ; |0 I7 ^% ~# o) p) s( S& E Random rd1 = new Random(); 5 C. W2 X2 s: `4 F int select = rd1.nextInt(goodNumber); 2 J- ]# ?# Z7 }7 b5 D5 G potentialParterner = potenAgent[select];$ D6 e4 T6 U x: B3 J
value = true; ' Y, b c- V: \% A. Q" G2 v- L } 4 ]# o4 ^. {7 o- K& [ return value; 3 W6 e+ W& q& J6 _ }% f% _5 @, l6 E8 T( b0 w
始终只能打印出XXXXXXXXXXXXXXXXXXXX,请各位帮帮忙。