|
|
5仿真币
最近做流行病模型,需要在一个网格里面放多个Agent,我查了一下API,使用OrderedMultiGrid类来构造,里面提供了一些putObjectAt(int, int, index);之类的东西。似乎可以用。但是当我编程调试的时候发现在同一位置只能获取一个对象。这是很令人纳闷的事情。我想问一下Repast有提供什么好方法处理吗,不仅要能存进去,还要能方便的拿出来。
% z% ^: R' l! Q$ _& o, K private boolean findPotentialPartner(){& `/ D3 E! ?6 Y
boolean value = false;
$ J7 ~( t: p. k. [
8 ?; N7 i- e. p; y OrderedMulti2DGrid grid = space.getCurrentAgentSpace();
" M S2 b, w$ f; m Iterator iterator = grid.getIteratorAt(x, y);7 P9 ?- n. U0 \0 b9 {% d i9 t! |
SexAgent ag1 = null; : t @* C. ]6 W4 l- Q
SexAgent [] potenAgent = new SexAgent[20];& q. z3 B6 l4 P: D
int goodNumber = 0;* [( u! [& C( t1 e* i
while(iterator.hasNext()){
8 ?0 O& P4 ~6 o/ T" V9 x3 o System.out.println("XXXXXXXXXXXXXXXXXXXXX");' t! F! j" [: T' U; z2 S4 A6 X8 E
ag1 = (SexAgent)iterator.next();
; F r9 V2 g& { ?6 w3 \+ Q8 f( \ if((ag1.sex == FEMALE)
! |+ ?& w1 c/ W4 P3 Q &&(!ag1.isCoupled())){6 `8 d7 Z# T" t1 x3 {0 \9 I8 I" p4 x4 f4 D
System.out.println("YYYYYYYYYYYYYYYYYYYY");
+ Z# u+ Q: {+ C% ], `0 J- p7 \ potenAgent[goodNumber] = ag1;+ B3 w) k% {: m4 Y, j
goodNumber ++;% t# ~7 p0 {6 ~; {" ^* T4 Z
}: o5 d1 q3 S" M& I) w5 @; i
}( H- J" v7 I. G. J
+ \. N) [% Y! c. n/ ~, p3 y
if(goodNumber >0){1 \' _5 ^" F2 i6 D0 ~' @. D
System.out.println("ZZZZZZZZZZZZZZZZZZZZZZZZZZZZ"); & E7 a% \6 s9 R8 a
Random rd1 = new Random();
! I; N! ~6 ?% L. ~ int select = rd1.nextInt(goodNumber);
, P, b8 x/ w( w {7 X potentialParterner = potenAgent[select];) i @( X9 c. M5 o
value = true;4 a c8 L- v' Z% v
}' X! |: T6 ^- w+ C; |
return value;1 @2 F% K7 P% x# M2 p" e3 {& j% r
}
% |* l) @0 s) a% p( y8 K3 @& Z4 ]! o1 T始终只能打印出XXXXXXXXXXXXXXXXXXXX,请各位帮帮忙。 |
|