|
|
5仿真币
最近做流行病模型,需要在一个网格里面放多个Agent,我查了一下API,使用OrderedMultiGrid类来构造,里面提供了一些putObjectAt(int, int, index);之类的东西。似乎可以用。但是当我编程调试的时候发现在同一位置只能获取一个对象。这是很令人纳闷的事情。我想问一下Repast有提供什么好方法处理吗,不仅要能存进去,还要能方便的拿出来。
- @- B( z/ v: y% S1 U; J private boolean findPotentialPartner(){6 W4 r% \6 U3 h9 L9 b
boolean value = false;( g* r( u$ l8 _3 I; X
+ u3 d( ?3 E, P8 E1 d: w OrderedMulti2DGrid grid = space.getCurrentAgentSpace(); N8 e! G3 V: V1 u
Iterator iterator = grid.getIteratorAt(x, y);
$ t) R% W& w* h, L% J m0 R4 J SexAgent ag1 = null; , u" f1 c4 T+ z% s' s% U
SexAgent [] potenAgent = new SexAgent[20];
# i* K" B9 ]( J+ [$ B int goodNumber = 0;0 l- _* l; r9 ?
while(iterator.hasNext()){4 T) v$ P, D, |; Z( L
System.out.println("XXXXXXXXXXXXXXXXXXXXX");
/ ?9 J; ]0 O/ u' A* q) c: I+ P4 H: J ag1 = (SexAgent)iterator.next();# Q! `" M# n: j
if((ag1.sex == FEMALE)
( m" @% g1 q6 I, n- v( g5 F# R0 O6 V$ k &&(!ag1.isCoupled())){: J* Y& u) U. h& t+ ?
System.out.println("YYYYYYYYYYYYYYYYYYYY");
4 b+ ~ H8 _# B9 C potenAgent[goodNumber] = ag1;
! x# s% d# Z! O, U goodNumber ++;
( B9 B d2 k6 z }
7 x9 A) V6 B: A5 W }1 |8 k5 D8 u3 P( d
' g" e( C, f+ y9 a
if(goodNumber >0){* l2 D4 t/ c/ l$ x% F
System.out.println("ZZZZZZZZZZZZZZZZZZZZZZZZZZZZ");
) I6 X; h& Q5 w- C+ S: ^4 G' Q Random rd1 = new Random();
2 u2 L7 m, p9 Y, o; V% ^ int select = rd1.nextInt(goodNumber);
8 l- N! j: u* k7 n* d potentialParterner = potenAgent[select];
: X# b1 Q. u/ L, O! c( _/ p value = true;& T) B' o W* q+ p) I& a
}
" o8 u. x/ S! i( Z1 k return value;5 ?1 b/ e& Z# @9 u' B7 O4 V+ ?* ^
}
6 B; h* q% x2 u* |: G% j* m始终只能打印出XXXXXXXXXXXXXXXXXXXX,请各位帮帮忙。 |
|