|
5仿真币
最近做流行病模型,需要在一个网格里面放多个Agent,我查了一下API,使用OrderedMultiGrid类来构造,里面提供了一些putObjectAt(int, int, index);之类的东西。似乎可以用。但是当我编程调试的时候发现在同一位置只能获取一个对象。这是很令人纳闷的事情。我想问一下Repast有提供什么好方法处理吗,不仅要能存进去,还要能方便的拿出来。
/ ^# ]% f# U: n" ?5 K private boolean findPotentialPartner(){ f' n" I( ^" [6 @
boolean value = false;: G; `7 t3 x) P" U0 m
1 j& Q! E$ u# }" P# D2 O8 C! F1 g1 G OrderedMulti2DGrid grid = space.getCurrentAgentSpace();6 { Y2 z: W0 a, w* u
Iterator iterator = grid.getIteratorAt(x, y);
. \+ V: V+ Z { SexAgent ag1 = null;
% n6 H, j/ i! \/ r& W/ C SexAgent [] potenAgent = new SexAgent[20]; N, j# x. T: r: @
int goodNumber = 0;
2 k' C# J. C U% } while(iterator.hasNext()){1 e) |& h4 J! T {" o* U0 G D
System.out.println("XXXXXXXXXXXXXXXXXXXXX");- H3 w- \( E9 p+ s9 R; T- [
ag1 = (SexAgent)iterator.next();
+ A$ w9 |" h' M' I9 |; x if((ag1.sex == FEMALE) 2 O$ C- V* O8 a; y% p
&&(!ag1.isCoupled())){
' G) ]1 w5 z& c& u System.out.println("YYYYYYYYYYYYYYYYYYYY");; a U3 l4 }5 O3 i
potenAgent[goodNumber] = ag1;
2 Z B5 z$ u ` goodNumber ++;, X8 @; u" Z; x5 |" g
}& b4 f6 ~- y- W4 P% x2 ^% W
}# k7 s" \' b. } O
7 n( L8 q5 v/ A0 J3 ]
if(goodNumber >0){. \1 i$ q7 R# h) R
System.out.println("ZZZZZZZZZZZZZZZZZZZZZZZZZZZZ");
9 ^- I3 ^1 H# q9 V, Y9 K Random rd1 = new Random();
& U( s& S; }( |8 n( @ int select = rd1.nextInt(goodNumber);+ r5 y% ]9 o, W
potentialParterner = potenAgent[select];7 r' x, l1 m1 h! O' L* {: y4 g+ p
value = true;
4 A2 J* B. c. P1 M# Z# e6 P }9 ^2 Y9 x3 k1 O# ?. Q
return value;
/ I" R- x5 o* b" X }' U9 [9 b/ i. p; s
始终只能打印出XXXXXXXXXXXXXXXXXXXX,请各位帮帮忙。 |
|