|
|
5仿真币
最近做流行病模型,需要在一个网格里面放多个Agent,我查了一下API,使用OrderedMultiGrid类来构造,里面提供了一些putObjectAt(int, int, index);之类的东西。似乎可以用。但是当我编程调试的时候发现在同一位置只能获取一个对象。这是很令人纳闷的事情。我想问一下Repast有提供什么好方法处理吗,不仅要能存进去,还要能方便的拿出来。% _+ F$ U, P q0 U1 X# A# g
private boolean findPotentialPartner(){6 @+ N5 U$ F! X# Q8 D& t5 {
boolean value = false;
7 e) y. b0 s/ t
- C6 E7 b9 A1 |0 @- d OrderedMulti2DGrid grid = space.getCurrentAgentSpace();
) A" }7 m" B& d9 B, e4 } Iterator iterator = grid.getIteratorAt(x, y);; ?# ~+ e6 x3 h8 i4 b7 [& m( }
SexAgent ag1 = null; , ]1 t* y1 l4 _( E$ M( B# t1 b0 b9 E
SexAgent [] potenAgent = new SexAgent[20];2 s" f) g/ L* l3 s* X
int goodNumber = 0;6 Z( {! O$ e7 l* d. ^' y: t* q
while(iterator.hasNext()){/ j" g. ~4 [3 \ u$ g
System.out.println("XXXXXXXXXXXXXXXXXXXXX");
3 s" ^2 ]! J2 r, z ag1 = (SexAgent)iterator.next();
0 U9 n& K/ M$ @6 G if((ag1.sex == FEMALE) R( G$ P* O; f' v( \
&&(!ag1.isCoupled())){: R( E1 ?0 t& \, R; A! V( @
System.out.println("YYYYYYYYYYYYYYYYYYYY");( {1 H7 n3 V" A: ~8 X0 _
potenAgent[goodNumber] = ag1;
* j- S' [) [3 J* j) f; E5 \ goodNumber ++;
$ s3 z$ p3 I. S; x" O }4 H" R7 D1 L9 n1 C4 ~! ^
}
0 @! y0 v" M$ E+ n1 d * M+ ?3 p& X) u# B0 o
if(goodNumber >0){
% M: L7 q3 N, P" C6 ]- z System.out.println("ZZZZZZZZZZZZZZZZZZZZZZZZZZZZ");
* c. ]1 `/ R- S Random rd1 = new Random();
: [- P' K- Q& q* b5 h6 m& R) m int select = rd1.nextInt(goodNumber);
# V$ K2 H2 I* `* u/ z: K3 v/ x2 V potentialParterner = potenAgent[select];. F+ T' G) C t% h
value = true;
, E- Y) E# w& b% B% R/ U- x }
9 J- H) O: {" \9 Y- s return value;
" m! F' ~1 {6 T+ U m; [ }
; }: @0 P; I+ @3 _, H6 l; R9 e1 R始终只能打印出XXXXXXXXXXXXXXXXXXXX,请各位帮帮忙。 |
|