|
|
5仿真币
最近做流行病模型,需要在一个网格里面放多个Agent,我查了一下API,使用OrderedMultiGrid类来构造,里面提供了一些putObjectAt(int, int, index);之类的东西。似乎可以用。但是当我编程调试的时候发现在同一位置只能获取一个对象。这是很令人纳闷的事情。我想问一下Repast有提供什么好方法处理吗,不仅要能存进去,还要能方便的拿出来。
, S) z+ {- O) p) C) }% Z* f/ k private boolean findPotentialPartner(){7 i- ?8 l2 Y* N3 g$ f9 J
boolean value = false;$ c, c" P G+ d ~
, c1 P: p7 u, c/ O2 ? OrderedMulti2DGrid grid = space.getCurrentAgentSpace();( u( t' ]3 P6 u& K
Iterator iterator = grid.getIteratorAt(x, y);
4 D* V6 n4 ~" p, x SexAgent ag1 = null; ! \6 ]6 W7 @( u( \
SexAgent [] potenAgent = new SexAgent[20];
) h5 e1 \9 C: H/ t. ]9 p4 j int goodNumber = 0;
. u h, G& }* `# { while(iterator.hasNext()){% {' l* p3 R+ T6 M7 l
System.out.println("XXXXXXXXXXXXXXXXXXXXX");
' x. u; L# E i. g$ @, v ag1 = (SexAgent)iterator.next();$ H9 [5 Q; r7 a( R% \, n8 a* Z) U
if((ag1.sex == FEMALE) ) h/ l% T9 M. s
&&(!ag1.isCoupled())){$ E# X& ^ n$ }6 K2 b2 Q* U
System.out.println("YYYYYYYYYYYYYYYYYYYY");
7 ?% q! F0 r* n2 F3 E0 B potenAgent[goodNumber] = ag1;
7 B8 \) B" \# F$ E: b goodNumber ++;
2 v2 t. h) t; j! f8 d. ]- a }( i: p" Y0 M+ B$ n
}
( I8 P4 Q5 [2 ~3 w' P, j) J6 n : K% `* P/ C9 `( F6 @
if(goodNumber >0){
( U6 G- R( x5 d" v System.out.println("ZZZZZZZZZZZZZZZZZZZZZZZZZZZZ"); ! B; e8 ~4 {; V5 O" O6 b
Random rd1 = new Random();
& ?: X8 e% e8 ^1 T3 W( I int select = rd1.nextInt(goodNumber);2 B/ z `& G( I
potentialParterner = potenAgent[select];
5 x" i4 d2 C" L. @* N$ Q value = true;1 x2 J* P8 M3 g6 v3 v
}
" ^+ \, t0 O0 o) h# c( Q return value;% P* P+ O# H- I9 c. d$ Y/ r
}
$ t/ Y# F) e6 s R始终只能打印出XXXXXXXXXXXXXXXXXXXX,请各位帮帮忙。 |
|