|
|
5仿真币
最近做流行病模型,需要在一个网格里面放多个Agent,我查了一下API,使用OrderedMultiGrid类来构造,里面提供了一些putObjectAt(int, int, index);之类的东西。似乎可以用。但是当我编程调试的时候发现在同一位置只能获取一个对象。这是很令人纳闷的事情。我想问一下Repast有提供什么好方法处理吗,不仅要能存进去,还要能方便的拿出来。
8 M! L9 R$ P3 m( e7 F5 B private boolean findPotentialPartner(){
/ P+ l! A3 |) x5 k$ a( W boolean value = false;/ ~% P l: X0 h1 s7 g+ `
* X1 @- `2 m: p: A% A& Z
OrderedMulti2DGrid grid = space.getCurrentAgentSpace();- K* A5 }- _5 v& e
Iterator iterator = grid.getIteratorAt(x, y);+ E' D! u- U0 o. Q& d
SexAgent ag1 = null;
5 [% o0 d4 C3 q9 g7 D! k6 n9 g q SexAgent [] potenAgent = new SexAgent[20];
l6 |4 \1 y' w' R4 P# p int goodNumber = 0;+ b! @) j9 Q# D0 {# `9 x# X
while(iterator.hasNext()){
- Q+ q9 V6 o# d0 Y2 ]3 o& \ System.out.println("XXXXXXXXXXXXXXXXXXXXX");
' j! L' n4 T3 ~* Z' }- {7 W2 s ag1 = (SexAgent)iterator.next();
8 s; l2 R* q* I0 }2 x if((ag1.sex == FEMALE)
$ [- u* n% ]$ Y) H9 T- _ &&(!ag1.isCoupled())){
# v! w& N# B; m w2 N: i! H System.out.println("YYYYYYYYYYYYYYYYYYYY");
' X) n# e0 p* `4 | potenAgent[goodNumber] = ag1;: h2 n# p7 G. G- N" @2 m- H
goodNumber ++;: S9 ~ W5 X( t2 k J3 j1 i
}
' e7 l. ?* E0 z* h }
+ u! l! @& u h4 E, O6 i, b ) t0 j2 V$ U0 d0 H% V' ?
if(goodNumber >0){1 n& h5 v: e. n" |: R
System.out.println("ZZZZZZZZZZZZZZZZZZZZZZZZZZZZ");
( O8 x" y$ G; [9 i+ r% s Random rd1 = new Random();) a: f, m6 T2 e
int select = rd1.nextInt(goodNumber);
k; E: M6 Z/ |, |. ?/ M; V potentialParterner = potenAgent[select];
6 J4 C/ Y1 d" @ f4 `5 s value = true;9 @$ r) M1 x% Z
}
0 l R: }% c' @7 Q4 W/ p return value;5 o, x% m* n- z; a
}) E0 j. A3 r- n( }! t2 C
始终只能打印出XXXXXXXXXXXXXXXXXXXX,请各位帮帮忙。 |
|