|
|
5仿真币
最近做流行病模型,需要在一个网格里面放多个Agent,我查了一下API,使用OrderedMultiGrid类来构造,里面提供了一些putObjectAt(int, int, index);之类的东西。似乎可以用。但是当我编程调试的时候发现在同一位置只能获取一个对象。这是很令人纳闷的事情。我想问一下Repast有提供什么好方法处理吗,不仅要能存进去,还要能方便的拿出来。
% t0 U# w8 F- M4 R X private boolean findPotentialPartner(){
, i' S3 ?' s- \8 Y/ i+ o7 _ boolean value = false;
" x: N* ?2 ?3 l ( b0 W$ L; r! m& d, T% f
OrderedMulti2DGrid grid = space.getCurrentAgentSpace();
7 W& x$ r _+ H6 D& h1 U4 F Iterator iterator = grid.getIteratorAt(x, y);/ ^2 W2 y5 ]( C
SexAgent ag1 = null;
4 ^" E" ?/ H" X5 t# p3 X" p, p7 V SexAgent [] potenAgent = new SexAgent[20];5 Y' n) g8 V; y8 m. z& `
int goodNumber = 0;. ^1 ]; F1 D. o6 d* C
while(iterator.hasNext()){0 Z1 X- J; C; E/ |: R4 U. B
System.out.println("XXXXXXXXXXXXXXXXXXXXX");
1 W0 W3 Y: f7 x ag1 = (SexAgent)iterator.next();
% }8 B: m9 Y: F& m( R8 i1 d if((ag1.sex == FEMALE)
1 }7 p3 y2 B, d &&(!ag1.isCoupled())){0 H- s) j( f, M; \; Y
System.out.println("YYYYYYYYYYYYYYYYYYYY");2 {9 Z. A* e0 M6 N6 \+ l
potenAgent[goodNumber] = ag1; G9 Q$ e* W. l, v( a
goodNumber ++;) Q3 E1 u% b: H6 w1 D9 G
}
6 q+ \* Z. K3 B2 m: f% U }# @4 d# p3 B: T5 n* B" _* D
- B5 d s5 O& K K8 G+ M5 i* b
if(goodNumber >0){* [9 ?" O0 P/ ^; l; ]8 ~
System.out.println("ZZZZZZZZZZZZZZZZZZZZZZZZZZZZ");
1 \+ W! t) b7 p @$ F Random rd1 = new Random();: |: P! B- D% S" V+ q# t
int select = rd1.nextInt(goodNumber);, S5 D& ^$ q0 R- N0 u
potentialParterner = potenAgent[select];
& C: S1 G! O( V! Q& D value = true;' F2 K+ K( u( Q$ I( w
}. I8 r( f& A/ m; w/ w: _. `7 T
return value;) I# ?6 w9 s5 f, Z6 N/ X2 R9 H
}
( V6 N$ N( U' _5 P3 ~始终只能打印出XXXXXXXXXXXXXXXXXXXX,请各位帮帮忙。 |
|