|
|
5仿真币
最近做流行病模型,需要在一个网格里面放多个Agent,我查了一下API,使用OrderedMultiGrid类来构造,里面提供了一些putObjectAt(int, int, index);之类的东西。似乎可以用。但是当我编程调试的时候发现在同一位置只能获取一个对象。这是很令人纳闷的事情。我想问一下Repast有提供什么好方法处理吗,不仅要能存进去,还要能方便的拿出来。
7 }$ J8 m) K) ]" i, S& N5 n5 `) M" v8 A private boolean findPotentialPartner(){) J5 g# @8 ]3 v6 N2 L0 E) r& y
boolean value = false;% l6 d5 Z7 D h3 u
/ r3 l G; `; l# \+ y6 Y
OrderedMulti2DGrid grid = space.getCurrentAgentSpace();
4 l+ I1 ^, l4 A3 c- l Iterator iterator = grid.getIteratorAt(x, y);6 Y, w0 j7 x+ H$ Z" B" m6 J; |
SexAgent ag1 = null;
% U( H0 I9 B( c5 J, F SexAgent [] potenAgent = new SexAgent[20];% K0 H8 |+ ^ U/ E, @9 n8 ?' V6 x
int goodNumber = 0;% Z) i6 O* }1 J5 U1 \( A9 h# q2 f
while(iterator.hasNext()){
& z( n* l/ L5 j3 p System.out.println("XXXXXXXXXXXXXXXXXXXXX");; n, g# }0 e! d
ag1 = (SexAgent)iterator.next();. q2 Z7 c0 \- ^# J( y" [! Q
if((ag1.sex == FEMALE)
$ P1 B) y3 d1 P9 P5 ?# G8 | &&(!ag1.isCoupled())){0 ^4 K- L6 X& e7 v
System.out.println("YYYYYYYYYYYYYYYYYYYY");
; t6 ^' T" u8 }6 o0 w+ C potenAgent[goodNumber] = ag1;
- w* m# | W; y; ~8 C. H+ y F goodNumber ++;8 ^5 ]* e/ u# c
}; y. g; ^' X4 F$ k8 l) c
}
* q3 ]( M# J" A+ K" Y4 P, X
/ \; ~4 [+ d+ l if(goodNumber >0){
, k+ l8 J% x* s) g9 L# s; W6 Z System.out.println("ZZZZZZZZZZZZZZZZZZZZZZZZZZZZ"); + D/ ?7 Z0 Z( t& t, k" d( O7 l
Random rd1 = new Random();
9 I1 O S1 w& I$ N int select = rd1.nextInt(goodNumber);5 F) Z9 {% h0 t% o5 X
potentialParterner = potenAgent[select];
7 n$ _9 B' D- j% D+ F, f6 \% @ value = true;
C3 V7 ]2 {! n* A+ O# p+ r- R }
8 q+ i" P( Q e2 Q, q return value;
- L1 s1 ]2 n9 p6 |9 S. P! l G }- \& G: k5 W7 [
始终只能打印出XXXXXXXXXXXXXXXXXXXX,请各位帮帮忙。 |
|