|
|
5仿真币
最近做流行病模型,需要在一个网格里面放多个Agent,我查了一下API,使用OrderedMultiGrid类来构造,里面提供了一些putObjectAt(int, int, index);之类的东西。似乎可以用。但是当我编程调试的时候发现在同一位置只能获取一个对象。这是很令人纳闷的事情。我想问一下Repast有提供什么好方法处理吗,不仅要能存进去,还要能方便的拿出来。
) z0 U9 E" o& j) J' A7 ^ private boolean findPotentialPartner(){
, e1 E3 S+ v4 r* I+ l5 I boolean value = false;7 ?- C" S5 E3 {7 ]# x
U# U3 O. | n* @ OrderedMulti2DGrid grid = space.getCurrentAgentSpace();
2 z b. C) Y- q9 Z" O. | Iterator iterator = grid.getIteratorAt(x, y);
0 \4 N5 k. f* e SexAgent ag1 = null;
" J5 B; U3 R/ E- M4 J, i# [ SexAgent [] potenAgent = new SexAgent[20];# d& B: L2 I9 c$ t# _) s1 y
int goodNumber = 0;& c9 Y4 q! J/ f H/ L
while(iterator.hasNext()){
0 X/ `! `- t0 J( ]) O. J System.out.println("XXXXXXXXXXXXXXXXXXXXX");$ i3 {3 T6 t( @
ag1 = (SexAgent)iterator.next();. x0 F' m5 g6 s3 g( k7 X
if((ag1.sex == FEMALE) & P$ C9 q& i- {
&&(!ag1.isCoupled())){
" A; t: n' X9 q, v+ d' m4 p System.out.println("YYYYYYYYYYYYYYYYYYYY");
6 j* P) r" Z6 d( ] potenAgent[goodNumber] = ag1;
/ S) m4 ?/ v9 @4 @3 w" _; z7 [, T0 |6 H; Q goodNumber ++;/ F6 I6 |1 n b, K3 s
}
# o) O3 G; c( w9 R; S( m }) U: [" x8 q9 @% O# J
9 a8 g5 @. n6 ?7 G2 I1 B: M if(goodNumber >0){( Z) \' J, a) P; Y2 b- Y
System.out.println("ZZZZZZZZZZZZZZZZZZZZZZZZZZZZ");
; [$ h: \. f, `# ]3 O Random rd1 = new Random();
! s: H/ k" Y3 R+ f! A# r int select = rd1.nextInt(goodNumber);* v6 l5 {. V7 d" N
potentialParterner = potenAgent[select];! B( E: U5 p" Z i. Y L8 {
value = true;0 ], L/ `% `7 @$ z' O& j. n
}' L% v( Y" W2 o5 y
return value;9 l; H4 \$ w" q% D. w' ]
}
* y$ `8 l! E6 t+ F7 b( s始终只能打印出XXXXXXXXXXXXXXXXXXXX,请各位帮帮忙。 |
|