|
5仿真币
最近做流行病模型,需要在一个网格里面放多个Agent,我查了一下API,使用OrderedMultiGrid类来构造,里面提供了一些putObjectAt(int, int, index);之类的东西。似乎可以用。但是当我编程调试的时候发现在同一位置只能获取一个对象。这是很令人纳闷的事情。我想问一下Repast有提供什么好方法处理吗,不仅要能存进去,还要能方便的拿出来。
, x5 m! J$ a4 k; a5 v6 F private boolean findPotentialPartner(){- U5 E" R& ]: R' o- S8 _
boolean value = false;3 V8 V% ^/ e4 a7 H( v
: p" m) w/ G$ E: S8 y
OrderedMulti2DGrid grid = space.getCurrentAgentSpace();
% I+ y. X8 y4 F- _4 [ Iterator iterator = grid.getIteratorAt(x, y);3 Y' v) J: O; Y3 V; k
SexAgent ag1 = null; & a* E I8 p- O. N% a
SexAgent [] potenAgent = new SexAgent[20];( Z$ D8 E1 l( x# Z% Q
int goodNumber = 0;
3 o6 s) N" _+ n9 H' R2 y. x while(iterator.hasNext()){/ D- j4 k* r! w8 g7 L
System.out.println("XXXXXXXXXXXXXXXXXXXXX");
8 Z4 v* Z- |4 C/ h9 N [. | ag1 = (SexAgent)iterator.next();$ u) ?( v7 A. a6 O! y
if((ag1.sex == FEMALE)
: C( a( {" f+ U% X8 H &&(!ag1.isCoupled())){. k3 B, j! Q1 P }1 N# Y8 b
System.out.println("YYYYYYYYYYYYYYYYYYYY");0 W( I+ @3 p/ S- D
potenAgent[goodNumber] = ag1;& {, w/ [) W% ?* i1 u+ {, M
goodNumber ++;
0 k( Y' W0 V+ s2 r$ ^* X }
* q n) K) P" q, l/ b: A }, Q6 v& q/ f) Y" C# T* E3 @
o# d- z8 g2 ?% Z; s2 T5 _
if(goodNumber >0){
! s# I! L% @+ [6 S" |: z System.out.println("ZZZZZZZZZZZZZZZZZZZZZZZZZZZZ");
6 ?0 M3 F- ~/ b9 ?/ _) o Random rd1 = new Random();
0 _1 z, I! B& P9 E* [! ^3 O8 l! L int select = rd1.nextInt(goodNumber);$ O# P5 I' Z; A% C1 c
potentialParterner = potenAgent[select];9 T9 Q: e" ]( B: K& J0 Q4 H
value = true;
" F! Z5 f% g) e/ I2 q }
0 h' y; m- H, O- D$ K$ @* m7 @ return value;+ {" E6 c% O$ W* x& p
}6 V/ L& C; t& H8 J
始终只能打印出XXXXXXXXXXXXXXXXXXXX,请各位帮帮忙。 |
|