最近做流行病模型,需要在一个网格里面放多个Agent,我查了一下API,使用OrderedMultiGrid类来构造,里面提供了一些putObjectAt(int, int, index);之类的东西。似乎可以用。但是当我编程调试的时候发现在同一位置只能获取一个对象。这是很令人纳闷的事情。我想问一下Repast有提供什么好方法处理吗,不仅要能存进去,还要能方便的拿出来。$ o1 M! W. _& J" X: c w
private boolean findPotentialPartner(){6 g3 b4 K5 f( R0 m' T' R8 O
boolean value = false;7 i& E2 f8 s2 M. E. o1 Y" B& z
3 ^7 N7 r: E1 ^. f3 } J0 X8 @ OrderedMulti2DGrid grid = space.getCurrentAgentSpace(); - t* p9 F. d5 e9 j1 T Iterator iterator = grid.getIteratorAt(x, y);; D1 n. h& T1 [1 ~- p
SexAgent ag1 = null; : J q% A% a4 x( j7 h
SexAgent [] potenAgent = new SexAgent[20]; * p; B' A2 \. O/ x int goodNumber = 0; " s/ R3 v1 n9 d3 M5 ? Y; r7 b | while(iterator.hasNext()){ ) f; D( Q+ N( |; H4 D/ ]6 L System.out.println("XXXXXXXXXXXXXXXXXXXXX"); # I* j; o$ Y- C5 {! X6 y1 ] ag1 = (SexAgent)iterator.next(); # ]' B- t! O8 A4 z! ]0 K if((ag1.sex == FEMALE) 7 K) x/ |8 {3 r! n5 e; k
&&(!ag1.isCoupled())){, A8 p5 b- A9 K" K
System.out.println("YYYYYYYYYYYYYYYYYYYY");; o. J) s3 `+ _1 v1 ~8 S4 |
potenAgent[goodNumber] = ag1; . u. d1 U- n: B goodNumber ++; 0 X' v+ l) ?# P' `( ^ f, Y }# K: r1 \5 B6 q0 n+ z" e. w
}6 c8 @9 T# M0 [7 y2 l; ^- @2 ^
* q" M$ e Q7 d$ p2 j0 [ if(goodNumber >0){ / e; P: [ A% y0 e" e System.out.println("ZZZZZZZZZZZZZZZZZZZZZZZZZZZZ"); 6 u. c8 F# H& ] Random rd1 = new Random(); / E& }6 g) C* b; j1 y- V8 u9 b X int select = rd1.nextInt(goodNumber);) E5 ^( r8 Q' x# e7 N e) l
potentialParterner = potenAgent[select]; 3 w: Y3 {% k1 H( h/ _& t value = true;+ i9 L% P% `- h3 v P
} 5 S' o2 F3 L* W- m Q' u# V. ~ return value; C6 T) T2 p6 J2 C }# `- I# U' }6 R# R" f! e
始终只能打印出XXXXXXXXXXXXXXXXXXXX,请各位帮帮忙。