|
|
5仿真币
最近做流行病模型,需要在一个网格里面放多个Agent,我查了一下API,使用OrderedMultiGrid类来构造,里面提供了一些putObjectAt(int, int, index);之类的东西。似乎可以用。但是当我编程调试的时候发现在同一位置只能获取一个对象。这是很令人纳闷的事情。我想问一下Repast有提供什么好方法处理吗,不仅要能存进去,还要能方便的拿出来。
: o+ p3 ? @6 U; G2 |7 I- J# \ private boolean findPotentialPartner(){
5 c+ m2 T* Z0 E: h, V7 d% j boolean value = false;' T2 u9 F0 D$ s( }" {, V
5 B% W7 N& z( G, g
OrderedMulti2DGrid grid = space.getCurrentAgentSpace();7 [7 k1 [( V% z' O1 C1 V- f7 S, R
Iterator iterator = grid.getIteratorAt(x, y);
4 j; p8 \' e6 G$ C+ X9 _5 ` z& z SexAgent ag1 = null;
; _ P% s3 q* s: ?: Z SexAgent [] potenAgent = new SexAgent[20];
3 D6 c# b# k/ R* p/ y( ^4 B! I; C& P int goodNumber = 0;( k) J3 K$ w, C: |$ J+ {
while(iterator.hasNext()){) \! p5 [! |" c' n* E" r2 n3 C
System.out.println("XXXXXXXXXXXXXXXXXXXXX");
; W. R2 p% N2 B- G$ ~4 r& Z) P ag1 = (SexAgent)iterator.next();: `, j) G4 {) ?3 u' c; e
if((ag1.sex == FEMALE)
, B: I! t( E5 Q! E" S &&(!ag1.isCoupled())){: g I0 S5 f8 d& E6 C+ \; d
System.out.println("YYYYYYYYYYYYYYYYYYYY");
) ^2 ?: I0 \% }9 m8 o0 E potenAgent[goodNumber] = ag1;
. I7 }# r% ~/ `1 s$ m4 Q9 w goodNumber ++;& j- l3 h7 u3 X$ d0 n. d
}' F+ D- v2 r. H9 c, F |- p
}; s! U `0 w0 ?* I
0 l3 v3 P9 }5 n1 U6 c% M7 o& ~ if(goodNumber >0){
# \4 f5 F1 ?4 z- i# `* O System.out.println("ZZZZZZZZZZZZZZZZZZZZZZZZZZZZ");
7 q5 B, ]. y! d Random rd1 = new Random();% W9 B2 j0 H9 G+ [5 h& X f$ h
int select = rd1.nextInt(goodNumber);! W) E7 @7 H! |: f
potentialParterner = potenAgent[select];* i( D' `+ P/ p
value = true;1 ^2 S5 K: i, N9 N3 o
}
9 Y2 |; X( N0 U; D' T2 h return value; d# Z" p1 ~8 f
}
7 V) j" l* d( G始终只能打印出XXXXXXXXXXXXXXXXXXXX,请各位帮帮忙。 |
|