|
|
5仿真币
最近做流行病模型,需要在一个网格里面放多个Agent,我查了一下API,使用OrderedMultiGrid类来构造,里面提供了一些putObjectAt(int, int, index);之类的东西。似乎可以用。但是当我编程调试的时候发现在同一位置只能获取一个对象。这是很令人纳闷的事情。我想问一下Repast有提供什么好方法处理吗,不仅要能存进去,还要能方便的拿出来。( |) O+ e+ d4 r' W% _
private boolean findPotentialPartner(){
" F4 ^7 h9 R V boolean value = false;% O4 o2 M( Y* v* p
" Q( g0 z* M! p* Y
OrderedMulti2DGrid grid = space.getCurrentAgentSpace();2 w9 t1 x4 T& s/ P- P5 r
Iterator iterator = grid.getIteratorAt(x, y);: Z- J! [4 ?6 l. {/ Z9 R
SexAgent ag1 = null;
* m! R K8 n: n0 q. O SexAgent [] potenAgent = new SexAgent[20];
0 p! E. s( O* _# G' y% \7 t int goodNumber = 0;/ V ^# z+ K+ |* j, v
while(iterator.hasNext()){. h; D# u5 X! g' M6 u" Y) _
System.out.println("XXXXXXXXXXXXXXXXXXXXX");
+ t5 g; T9 Z' m" c4 Y+ l `5 t- W ag1 = (SexAgent)iterator.next();& d5 h% x4 x( ?: I! b
if((ag1.sex == FEMALE)
4 v# N: I) v4 |' E ^ &&(!ag1.isCoupled())){. a4 J9 y( a9 c: y( b9 X6 ^* v
System.out.println("YYYYYYYYYYYYYYYYYYYY");
( Y$ u8 r" @7 B( d potenAgent[goodNumber] = ag1;9 U2 s0 c1 h. e( O' o1 M" w& o
goodNumber ++;) m+ O, ^/ L, K) \- n8 L. p; @. Q; m
}. U0 _& n2 x" e8 r+ f( b1 o
}
( `& @! ~$ S4 i* [1 R0 ~
2 o0 `0 T) w3 B! J if(goodNumber >0){
2 O6 T! \4 H7 c9 q s1 Y System.out.println("ZZZZZZZZZZZZZZZZZZZZZZZZZZZZ"); ' G! u: [: F5 Q' d( L4 z: q
Random rd1 = new Random();( o8 R: B3 C" R* I
int select = rd1.nextInt(goodNumber);
" ^, R2 A" J; a' a8 f( E" p, M potentialParterner = potenAgent[select];* @ x Z; t% b7 D2 p3 X
value = true;
! X: J5 ~8 m$ } }+ v5 }- f. I; R2 ~# k/ m
return value;8 I [$ O# f- D8 |: c& o) [ u: @
}
1 K( g: V) [7 j/ a6 \8 y% n: x始终只能打印出XXXXXXXXXXXXXXXXXXXX,请各位帮帮忙。 |
|