|
|
5仿真币
最近做流行病模型,需要在一个网格里面放多个Agent,我查了一下API,使用OrderedMultiGrid类来构造,里面提供了一些putObjectAt(int, int, index);之类的东西。似乎可以用。但是当我编程调试的时候发现在同一位置只能获取一个对象。这是很令人纳闷的事情。我想问一下Repast有提供什么好方法处理吗,不仅要能存进去,还要能方便的拿出来。: N; F6 K6 M0 l5 b
private boolean findPotentialPartner(){
& A+ }, w- z) q9 G0 r# o$ j boolean value = false;
( }/ p, b ?/ W* ?
+ w8 @. ]8 I- _' v1 S% Q6 F' @. n OrderedMulti2DGrid grid = space.getCurrentAgentSpace();
1 T; Y j. D" ]. V( a Iterator iterator = grid.getIteratorAt(x, y);
/ [" e- s- \, | SexAgent ag1 = null; 7 n# s, Z3 [5 d% N+ Z* f( }9 X
SexAgent [] potenAgent = new SexAgent[20];# _, H% w% C! S8 Z9 x
int goodNumber = 0;
& L: u3 w" Y. } while(iterator.hasNext()){
7 |4 H- \/ a; L4 B* p u1 `8 E System.out.println("XXXXXXXXXXXXXXXXXXXXX");
* N/ s: F* `" c ag1 = (SexAgent)iterator.next();5 b4 K& N% V% |3 S0 }
if((ag1.sex == FEMALE) ; Y* G5 f0 \7 A3 t( o; M6 I
&&(!ag1.isCoupled())){6 u7 `" B0 U7 V. r/ M; e
System.out.println("YYYYYYYYYYYYYYYYYYYY");
/ H" x$ v; w: P4 V* {6 [: _ potenAgent[goodNumber] = ag1;
( \! V) e$ ~% M& }: T7 W1 E& E V) K goodNumber ++;
; v, e% ]- @" {* M& k9 m C }
$ h+ n7 g/ k* B; r+ Y }8 H; Y! i2 w- }" x) t$ U6 D
! G" ^ f& F; w! G t
if(goodNumber >0){
/ j& W' {( t: \: G: f System.out.println("ZZZZZZZZZZZZZZZZZZZZZZZZZZZZ"); ' M/ @* \$ x6 @# }8 C; n
Random rd1 = new Random();
! J8 l9 g- @; |) x& q( A; Z int select = rd1.nextInt(goodNumber);+ G3 l* p5 \7 l4 u
potentialParterner = potenAgent[select];
S. @# x! I' i& p ^8 x8 u value = true; Z u& M7 q x l3 i1 d
}
0 C" g' o- D2 i2 E6 Q return value;2 g# s, s- s2 B5 X
}
8 k0 }; z, I8 l" X+ g2 S( F, X始终只能打印出XXXXXXXXXXXXXXXXXXXX,请各位帮帮忙。 |
|