|
5仿真币
最近做流行病模型,需要在一个网格里面放多个Agent,我查了一下API,使用OrderedMultiGrid类来构造,里面提供了一些putObjectAt(int, int, index);之类的东西。似乎可以用。但是当我编程调试的时候发现在同一位置只能获取一个对象。这是很令人纳闷的事情。我想问一下Repast有提供什么好方法处理吗,不仅要能存进去,还要能方便的拿出来。1 s- b a8 X& ^3 ^: }/ D) v9 Q3 t% x
private boolean findPotentialPartner(){
' o |6 R% Z' I3 D/ n, m boolean value = false;
6 L& R, f$ v. K8 e" W' r ' c3 a2 Z' ~7 L8 P
OrderedMulti2DGrid grid = space.getCurrentAgentSpace();
0 L& A1 U" ^* Z/ l; U Iterator iterator = grid.getIteratorAt(x, y);
% u9 Z7 ]2 N8 \8 G5 E- h% }2 X SexAgent ag1 = null;
, r2 A/ w/ `9 f3 g SexAgent [] potenAgent = new SexAgent[20];. {2 U5 w4 H. I/ n9 x1 e
int goodNumber = 0;
, Y7 p* w* D' b2 i$ d! [' K while(iterator.hasNext()){6 W5 R) c3 w' V+ z, i( y) H
System.out.println("XXXXXXXXXXXXXXXXXXXXX");
5 ?9 I* J# ]! J0 f, E2 O ag1 = (SexAgent)iterator.next();
- R( l& b: w7 ]9 a( n% O/ L" c if((ag1.sex == FEMALE) % L. K+ k7 A! ^+ Y- ^
&&(!ag1.isCoupled())){
/ x7 o1 E0 H/ k J System.out.println("YYYYYYYYYYYYYYYYYYYY");
$ ?3 p% F$ l/ l4 ? potenAgent[goodNumber] = ag1;
7 O# D1 Q, P2 S7 T( j3 \3 w) V. K goodNumber ++;
) B: V2 T# G+ l6 [$ ~4 R I }
8 k1 `% \6 _ f( k3 t1 j }
- l7 l- x4 V0 @. a9 Z
& i) l w7 Y4 }7 Y" ~ if(goodNumber >0){3 i% g b _: f3 A7 e `3 Z |
System.out.println("ZZZZZZZZZZZZZZZZZZZZZZZZZZZZ");
: l$ H0 d, ^% C2 X Random rd1 = new Random();
0 n4 t* o$ ~! o6 P9 w int select = rd1.nextInt(goodNumber);
, r: L- v( M b. x5 j4 ?/ D- A# d potentialParterner = potenAgent[select];. l: |8 z& C# Z4 U" {' |5 ~% w
value = true;) g. D/ S8 Y& _# ]# E- W
}; p) v- q/ d# l+ Z- D
return value;' j7 c; M# s$ H, B* E
}* @$ I8 a. Y2 @* e
始终只能打印出XXXXXXXXXXXXXXXXXXXX,请各位帮帮忙。 |
|