|
|
5仿真币
最近做流行病模型,需要在一个网格里面放多个Agent,我查了一下API,使用OrderedMultiGrid类来构造,里面提供了一些putObjectAt(int, int, index);之类的东西。似乎可以用。但是当我编程调试的时候发现在同一位置只能获取一个对象。这是很令人纳闷的事情。我想问一下Repast有提供什么好方法处理吗,不仅要能存进去,还要能方便的拿出来。: g% j- \/ D" O7 T$ j U( {
private boolean findPotentialPartner(){; R1 p! C: r8 u4 h, ~& l
boolean value = false;
9 x3 Z) p" U0 g8 M, O6 p: w8 _ 1 V+ c) [) N4 P: o
OrderedMulti2DGrid grid = space.getCurrentAgentSpace();
# Q9 T8 Y' _% _. |! I2 m5 m Iterator iterator = grid.getIteratorAt(x, y);
6 H- n9 P- q+ m1 J4 q/ O0 E SexAgent ag1 = null;
* s4 R# c" D2 @7 h/ O: v4 O" ` SexAgent [] potenAgent = new SexAgent[20];* n; i8 o" L& I2 {
int goodNumber = 0;; M4 w: x: M! O+ a' _* r4 {
while(iterator.hasNext()){" S1 d% I( |8 n6 H' E: Z
System.out.println("XXXXXXXXXXXXXXXXXXXXX");
1 v( @' ?7 P& w ag1 = (SexAgent)iterator.next();
! O: @- u! U0 W t8 r9 J4 c if((ag1.sex == FEMALE) _: _8 z6 L" f, h! Z
&&(!ag1.isCoupled())){
' G* B, T$ F, l% N5 c6 u2 L. N. a* { System.out.println("YYYYYYYYYYYYYYYYYYYY");
. ?! h- U" D N potenAgent[goodNumber] = ag1;3 W, I# \& `4 x: u4 u6 `" g
goodNumber ++;' |1 j4 [6 d3 E* X+ f) G+ [
}" K) N T7 o/ y- v3 E3 W' X
}
1 A6 c1 U$ e- E. J& ] C / Y; G4 ]2 T6 O: F G9 S8 h
if(goodNumber >0){. f! c; n9 |" n: H* N5 k
System.out.println("ZZZZZZZZZZZZZZZZZZZZZZZZZZZZ"); % f# w& } F0 ~5 ~* k$ R7 d1 \
Random rd1 = new Random();3 U: V& O! S1 ~ d7 b! Y5 J
int select = rd1.nextInt(goodNumber);
1 n) S6 C2 E0 p0 ^$ x potentialParterner = potenAgent[select];1 w( x& L8 o' Q" @
value = true;
; a/ x. T; O' j- M }+ Q4 s" ?( i f6 }4 T$ T9 W1 l
return value;9 u5 x8 o2 Q6 K% w# t
}3 j* v2 W0 Z7 J3 \) @
始终只能打印出XXXXXXXXXXXXXXXXXXXX,请各位帮帮忙。 |
|