|
5仿真币
最近做流行病模型,需要在一个网格里面放多个Agent,我查了一下API,使用OrderedMultiGrid类来构造,里面提供了一些putObjectAt(int, int, index);之类的东西。似乎可以用。但是当我编程调试的时候发现在同一位置只能获取一个对象。这是很令人纳闷的事情。我想问一下Repast有提供什么好方法处理吗,不仅要能存进去,还要能方便的拿出来。1 V: _: q) W- ?8 I3 y8 V
private boolean findPotentialPartner(){, g) H [1 }' L, s
boolean value = false;
) [+ M* n, z( ]- D& _1 E & S! z; t% u" M: Q4 N9 j
OrderedMulti2DGrid grid = space.getCurrentAgentSpace();) w- F) _2 @! O
Iterator iterator = grid.getIteratorAt(x, y);$ \8 w/ S6 ~$ a5 n
SexAgent ag1 = null; $ R0 I4 B2 X* S
SexAgent [] potenAgent = new SexAgent[20];
2 S! y% ^+ c' h( n! W int goodNumber = 0;0 U. ?" y- M* ?. V; x7 ^, x8 Y
while(iterator.hasNext()){
+ }+ y$ k1 F4 a V System.out.println("XXXXXXXXXXXXXXXXXXXXX");- v' O+ i/ O$ F. e( X8 X2 p
ag1 = (SexAgent)iterator.next();5 t0 f8 G" f' K% j0 r- V& @, _
if((ag1.sex == FEMALE) / ^9 G, J" ^& H+ f! Z3 R- O& ]5 d
&&(!ag1.isCoupled())){
0 [+ y2 B& ]% o7 O2 U! q System.out.println("YYYYYYYYYYYYYYYYYYYY");" Y2 Z- E) O4 F; N; v0 e, p$ K
potenAgent[goodNumber] = ag1;3 M: N: A/ V7 h
goodNumber ++;
2 }. L) l4 V1 E1 u; W+ [' C }
2 `& T, o) R0 Q! h1 ` }
( _5 y' p9 B6 `! B, u " C) n7 d$ x5 P+ ^' V8 n6 f: j
if(goodNumber >0){# r3 z) m, I: i* q% A: u
System.out.println("ZZZZZZZZZZZZZZZZZZZZZZZZZZZZ");
( d& R% L3 L7 f2 T" w Random rd1 = new Random();
% b5 T3 x+ c; [5 R x7 c int select = rd1.nextInt(goodNumber);
# j3 J5 {7 m! ]2 E7 q potentialParterner = potenAgent[select];# K+ Z. e- Y0 I
value = true;
3 K8 a9 a% B3 n1 Z% i/ b }1 t. n; d/ B8 e: ^1 i
return value;. x' Y) N5 D) T4 Y G+ Q
}
" t# |& ~8 \2 p: Q3 L9 X始终只能打印出XXXXXXXXXXXXXXXXXXXX,请各位帮帮忙。 |
|