|
5仿真币
最近做流行病模型,需要在一个网格里面放多个Agent,我查了一下API,使用OrderedMultiGrid类来构造,里面提供了一些putObjectAt(int, int, index);之类的东西。似乎可以用。但是当我编程调试的时候发现在同一位置只能获取一个对象。这是很令人纳闷的事情。我想问一下Repast有提供什么好方法处理吗,不仅要能存进去,还要能方便的拿出来。
2 r/ {" c& ^; m$ d6 C4 _+ ? private boolean findPotentialPartner(){
0 ^9 b1 [; I* N, w8 b. B, r- N boolean value = false;! `* X# l/ V5 y& l
0 a' g+ L! p0 ?; l% \8 c" G5 Z
OrderedMulti2DGrid grid = space.getCurrentAgentSpace();
! z1 ?. @4 N$ L4 K8 I& e, b# O Iterator iterator = grid.getIteratorAt(x, y);
4 t a) ?! I2 l7 ^ SexAgent ag1 = null; " `* N/ u- A% z( ?& u' `/ ^7 c
SexAgent [] potenAgent = new SexAgent[20];+ _$ s7 T& o; a* [
int goodNumber = 0;
; [3 M/ _+ m0 s T U+ p& k+ b( u while(iterator.hasNext()){
2 Y) a# l# Y! [ System.out.println("XXXXXXXXXXXXXXXXXXXXX");
3 T. J$ B$ m1 s0 k' i ag1 = (SexAgent)iterator.next();
% `9 y' ^& v- G if((ag1.sex == FEMALE)
9 w$ c$ s3 X8 m. x1 a3 ?0 r; [3 o &&(!ag1.isCoupled())){
* ?. p! P0 ?% C' U* C* M6 ] System.out.println("YYYYYYYYYYYYYYYYYYYY");
: L( d- M- J* L0 Y! s) X potenAgent[goodNumber] = ag1;
6 l7 n. {: d: G. X) B2 \8 K goodNumber ++;4 H6 K ]5 j: C* e
}8 ]/ a! Y2 _& ^3 O' A& \3 w. U
}
4 f8 a, o* z$ u, h" U. n; s - l0 y* E( v. V& ]/ [, W" W
if(goodNumber >0){8 Q/ f% \0 _5 A4 ^* h
System.out.println("ZZZZZZZZZZZZZZZZZZZZZZZZZZZZ");
$ \: d" X8 M' c Random rd1 = new Random();
* |1 v: ], t) I0 R. u& b$ ? J int select = rd1.nextInt(goodNumber);$ r, j* @; y# s& _3 p$ n. M
potentialParterner = potenAgent[select];
$ M! y2 `( d0 C value = true;3 D, z- d: q% i3 j% m2 E
}
+ K' E7 g0 M. n+ r. w2 i& a return value;) ]6 K3 B4 v- w) q
}; v% g# s) g$ u" K& l1 {
始终只能打印出XXXXXXXXXXXXXXXXXXXX,请各位帮帮忙。 |
|