|
|
5仿真币
最近做流行病模型,需要在一个网格里面放多个Agent,我查了一下API,使用OrderedMultiGrid类来构造,里面提供了一些putObjectAt(int, int, index);之类的东西。似乎可以用。但是当我编程调试的时候发现在同一位置只能获取一个对象。这是很令人纳闷的事情。我想问一下Repast有提供什么好方法处理吗,不仅要能存进去,还要能方便的拿出来。
$ ~% F+ H4 a3 S: P private boolean findPotentialPartner(){
: Z6 n: H5 E/ _+ _3 B% X boolean value = false;
2 O' [# y' c& p& s1 D0 U# W
+ Q6 J0 S$ g& U1 Q OrderedMulti2DGrid grid = space.getCurrentAgentSpace();
# f; b/ F+ _: K; P+ B Iterator iterator = grid.getIteratorAt(x, y); [# s! c% q+ I% V3 n: v, O
SexAgent ag1 = null;
, I( f! W2 `( N0 O# E+ z# L SexAgent [] potenAgent = new SexAgent[20];( A* b- _4 i* W( J
int goodNumber = 0; g- T4 m0 f6 z! V" Z: I
while(iterator.hasNext()){% {! b; K$ |( p0 e- x. N; U
System.out.println("XXXXXXXXXXXXXXXXXXXXX");
3 {9 m5 d: G; p3 I- N, A ag1 = (SexAgent)iterator.next();
) w6 k9 Z6 F0 Z1 k; [) p0 ] if((ag1.sex == FEMALE)
/ C7 p4 y( B1 A* j9 f2 ~7 T6 [: r &&(!ag1.isCoupled())){1 J1 E, N% ]" @5 j2 j7 J
System.out.println("YYYYYYYYYYYYYYYYYYYY");2 u& F. H5 M- x& j. r1 Y
potenAgent[goodNumber] = ag1;
- a( b% \) }- H( a goodNumber ++;
6 J) s1 a8 i0 J! M- l }
l) V2 k& R) e u; B; e6 e0 | }4 c; N& n) v# P4 _' t6 q
5 `/ P* H! \) i# _0 p if(goodNumber >0){9 H( o; S' R1 T. ~7 |: U4 x( i
System.out.println("ZZZZZZZZZZZZZZZZZZZZZZZZZZZZ"); % h1 `+ F* E& j' W6 Q1 ]
Random rd1 = new Random();9 j) P/ j8 B/ ^) _5 b1 }
int select = rd1.nextInt(goodNumber);
4 l: \' G6 K7 [, o: V6 g potentialParterner = potenAgent[select];
) `# |1 n) `( Y4 i& z# U value = true;
! C" E" F0 x& e* |1 T }. ?" D: [# u3 h+ X3 K
return value;7 c8 o5 Y! F2 P4 |0 t5 ~; Z9 x, \
}
2 A- m' `" {* G2 g/ S+ p始终只能打印出XXXXXXXXXXXXXXXXXXXX,请各位帮帮忙。 |
|