|
5仿真币
最近做流行病模型,需要在一个网格里面放多个Agent,我查了一下API,使用OrderedMultiGrid类来构造,里面提供了一些putObjectAt(int, int, index);之类的东西。似乎可以用。但是当我编程调试的时候发现在同一位置只能获取一个对象。这是很令人纳闷的事情。我想问一下Repast有提供什么好方法处理吗,不仅要能存进去,还要能方便的拿出来。
2 W" Z5 I- J+ e# p private boolean findPotentialPartner(){
. @/ f9 r5 j `: g- }; K boolean value = false;
3 V$ _; A2 [" u
+ [) ]; G# T k( K0 ` OrderedMulti2DGrid grid = space.getCurrentAgentSpace();# y( w: Q- ~! R K O1 T
Iterator iterator = grid.getIteratorAt(x, y);: G9 c5 [4 v- w4 F l/ V9 J$ P' n( n
SexAgent ag1 = null;
5 V2 j5 P4 t) O2 f1 I. s SexAgent [] potenAgent = new SexAgent[20];
% x: B: k3 ^7 u3 H int goodNumber = 0;
' j3 D0 [4 A1 o: l: Z/ s3 L7 a- q$ P while(iterator.hasNext()){
! l! M: }& \' \) ]) N System.out.println("XXXXXXXXXXXXXXXXXXXXX");
# T, t N( k% e+ Q8 x( E6 ` ag1 = (SexAgent)iterator.next();* X' l7 [7 _: c ~5 n
if((ag1.sex == FEMALE)
$ V4 B2 r# M& `$ S& ?; x &&(!ag1.isCoupled())){
( k2 I: N% i7 q, w' B; p% ^/ G2 | System.out.println("YYYYYYYYYYYYYYYYYYYY");
`5 `3 w0 J; D) W7 \) b potenAgent[goodNumber] = ag1;& x C- U8 d7 ^4 N. h, O
goodNumber ++;% b, a# O: x0 q
}! \* q4 _; j, a1 ]
}& ]2 O! Z; ]# r
6 k6 I4 [5 H m
if(goodNumber >0){5 P# e& e. D4 w7 `( Q
System.out.println("ZZZZZZZZZZZZZZZZZZZZZZZZZZZZ"); 6 j+ Z+ v; `$ z2 M" C
Random rd1 = new Random();
( x: J- Y3 ^7 G+ ^: q" s2 u. R int select = rd1.nextInt(goodNumber);- I6 ~/ O4 W" A9 `+ j# Q
potentialParterner = potenAgent[select];
6 }, f: _; a+ w0 |7 F* s! H( g1 V' D value = true;
$ N+ }- [$ _: J. a& Y/ M) Z }8 S# W2 T& k$ m+ g% `% o6 U
return value;
- Q' N4 K+ ~1 B4 k) f6 P. X }
0 u" U3 c6 v2 J8 n0 T% ]始终只能打印出XXXXXXXXXXXXXXXXXXXX,请各位帮帮忙。 |
|