|
|
5仿真币
最近做流行病模型,需要在一个网格里面放多个Agent,我查了一下API,使用OrderedMultiGrid类来构造,里面提供了一些putObjectAt(int, int, index);之类的东西。似乎可以用。但是当我编程调试的时候发现在同一位置只能获取一个对象。这是很令人纳闷的事情。我想问一下Repast有提供什么好方法处理吗,不仅要能存进去,还要能方便的拿出来。6 j8 D( V* n! Q5 B2 a- K
private boolean findPotentialPartner(){
6 b: p1 H R: V7 a2 j; [ boolean value = false;
1 t0 O0 r! \9 R8 z' j* [ S$ k' F! o* z- k; F, ~& S
OrderedMulti2DGrid grid = space.getCurrentAgentSpace();3 V7 V9 q0 Y. D5 E
Iterator iterator = grid.getIteratorAt(x, y);5 ~+ }! @* h2 [" r1 x
SexAgent ag1 = null;
6 W x) R1 e1 T. A) Q# T SexAgent [] potenAgent = new SexAgent[20];
$ S" Y5 v5 }, u4 M6 k$ x, t' L int goodNumber = 0; `: x: l8 @: ^
while(iterator.hasNext()){
2 ]) w7 k+ B% j7 z) i' f4 @ System.out.println("XXXXXXXXXXXXXXXXXXXXX");+ C9 @8 X$ V0 c5 T) Q6 @
ag1 = (SexAgent)iterator.next();& t# i4 r; |' U2 O; ?
if((ag1.sex == FEMALE) 9 T% u+ \% r/ U3 ]
&&(!ag1.isCoupled())){
8 `2 @. f6 w- D- K9 b# D- p4 M System.out.println("YYYYYYYYYYYYYYYYYYYY");/ D0 J% @! z" f& L& K8 ^
potenAgent[goodNumber] = ag1;
, {/ k+ f) V: J2 o c goodNumber ++;
" \! ~& `3 K( R2 F }
3 N: Q* D/ n; w4 y8 B9 n# d }2 o, U) }; E" {2 s( G+ h4 |) z& ^& t
' @# Y& N9 x. r; e5 J if(goodNumber >0){, j. q" A1 W6 x3 K9 R# ~
System.out.println("ZZZZZZZZZZZZZZZZZZZZZZZZZZZZ");
: t& D u5 l; L) H+ V3 s1 V Random rd1 = new Random();
% k, G* V \3 u; o int select = rd1.nextInt(goodNumber);
. A' M" M$ Z9 _ potentialParterner = potenAgent[select];
- D R3 F0 a I0 f5 x value = true;8 S" o# l& m) X) Z0 G8 r
}0 K% k6 R$ V- l2 _: D$ W" p3 E$ t
return value;
, \! r$ t4 g+ t4 ^ }0 G# W3 V, C6 m5 H
始终只能打印出XXXXXXXXXXXXXXXXXXXX,请各位帮帮忙。 |
|