|
|
5仿真币
最近做流行病模型,需要在一个网格里面放多个Agent,我查了一下API,使用OrderedMultiGrid类来构造,里面提供了一些putObjectAt(int, int, index);之类的东西。似乎可以用。但是当我编程调试的时候发现在同一位置只能获取一个对象。这是很令人纳闷的事情。我想问一下Repast有提供什么好方法处理吗,不仅要能存进去,还要能方便的拿出来。- |* L7 x3 Y8 D
private boolean findPotentialPartner(){9 u, w& Z3 m8 ~7 B9 `: j9 t
boolean value = false;
1 o {) o6 y) _& @+ I: i 8 Z0 y3 e/ R. E. L
OrderedMulti2DGrid grid = space.getCurrentAgentSpace();! B$ c8 K( G+ w/ E3 F; {7 P& _
Iterator iterator = grid.getIteratorAt(x, y);. z+ K% |9 ], v2 g) B0 b% t
SexAgent ag1 = null;
: E1 x. [5 n0 E5 r3 Z8 a$ M% Y) I SexAgent [] potenAgent = new SexAgent[20];
; |) G# K: H. q( g1 W2 M! [ int goodNumber = 0;2 h) g+ O7 y- z" m. F9 h0 h
while(iterator.hasNext()){
' s7 m$ u* C7 l3 I) D0 \ System.out.println("XXXXXXXXXXXXXXXXXXXXX");
# Q% w& E Y# d9 R ag1 = (SexAgent)iterator.next();* I* l% c7 x, ~5 |/ r
if((ag1.sex == FEMALE)
5 a3 w" H$ B7 P, o7 {7 h &&(!ag1.isCoupled())){
/ j; f$ ~# a. z* }7 K: K System.out.println("YYYYYYYYYYYYYYYYYYYY");: I: l8 Q( f7 E& u4 n
potenAgent[goodNumber] = ag1;
$ z4 Z5 v9 r1 n% E9 T. E! }1 L. A+ L6 X goodNumber ++;" x3 @ V( J0 [" c
}
: M$ ^$ N! r; @; f7 b @% a7 o6 m }
: ~9 Y8 J, ?; j # z; Y5 [$ M- {, R$ F. D* L
if(goodNumber >0){5 b3 U1 O, U+ K0 l% r
System.out.println("ZZZZZZZZZZZZZZZZZZZZZZZZZZZZ"); 6 s% N+ e! |1 _9 i
Random rd1 = new Random();2 \8 k3 N/ E) M6 A" S
int select = rd1.nextInt(goodNumber);% F# u0 k" T' B/ C6 n# o, B
potentialParterner = potenAgent[select];
2 x" d2 l0 ~ I9 m: N" |! y value = true;
! p& C! f2 }& f6 e7 E w }$ l$ _9 K& |/ M- Q2 e
return value;+ o+ j& K3 @. E3 {" r0 e
}
: O$ F1 L- h# _1 p! ~始终只能打印出XXXXXXXXXXXXXXXXXXXX,请各位帮帮忙。 |
|