|
|
5仿真币
最近做流行病模型,需要在一个网格里面放多个Agent,我查了一下API,使用OrderedMultiGrid类来构造,里面提供了一些putObjectAt(int, int, index);之类的东西。似乎可以用。但是当我编程调试的时候发现在同一位置只能获取一个对象。这是很令人纳闷的事情。我想问一下Repast有提供什么好方法处理吗,不仅要能存进去,还要能方便的拿出来。3 H9 S1 O9 j/ r; l3 z; M' J; ?) d9 ^
private boolean findPotentialPartner(){4 q1 d4 c) f# p9 J
boolean value = false;. |" h5 R! a2 j+ s
& V& W4 a- j$ D
OrderedMulti2DGrid grid = space.getCurrentAgentSpace();' K, _, i* Y2 M) j3 @& U
Iterator iterator = grid.getIteratorAt(x, y);
9 \5 v9 W0 i6 `, A+ W SexAgent ag1 = null; / E9 E+ Q9 k9 h* L2 y+ ~9 ^5 m
SexAgent [] potenAgent = new SexAgent[20];% f; n4 M- R6 D- A$ K8 e! _
int goodNumber = 0;
& b# b7 K7 k. z4 l/ D. m; G while(iterator.hasNext()){
9 y% a9 v% D, Z System.out.println("XXXXXXXXXXXXXXXXXXXXX");
; e6 \) A! U* `3 }" Q- x7 ~. h ag1 = (SexAgent)iterator.next();
" f: L9 ]7 R7 A$ I% \ if((ag1.sex == FEMALE)
/ `3 i6 F+ l. ?( r9 b+ P5 a/ v0 V8 w &&(!ag1.isCoupled())){( b# j. ^; h: d5 E
System.out.println("YYYYYYYYYYYYYYYYYYYY");0 i- k1 l& b" u. l7 T6 x/ L
potenAgent[goodNumber] = ag1;& ^3 B& N) L. F$ u- \/ t
goodNumber ++;% T3 z3 S( F% c+ O) I
}
5 x4 E% g* a; J% K$ L }" Y3 y& U+ U/ d
7 D5 H$ |$ S/ P; V if(goodNumber >0){
) {6 Y4 S6 i5 @5 P4 _ System.out.println("ZZZZZZZZZZZZZZZZZZZZZZZZZZZZ"); ( K l9 q! `; T# [; G/ U2 G
Random rd1 = new Random();1 C1 T* d0 W! T9 D0 q5 v; W/ W5 b( Q
int select = rd1.nextInt(goodNumber);
8 f2 m) ~- ~ o, O3 |& o potentialParterner = potenAgent[select];
7 F& }$ R: H( a1 E, @ value = true;% }6 g3 s: ?( a; a- |- u
}
( `/ J. p( p. I4 O' Y" a3 I5 I return value;, f: F1 k7 Q/ _( S/ \
}" \6 E6 y0 l# T; n7 ^8 F+ d3 W
始终只能打印出XXXXXXXXXXXXXXXXXXXX,请各位帮帮忙。 |
|