|
|
5仿真币
最近做流行病模型,需要在一个网格里面放多个Agent,我查了一下API,使用OrderedMultiGrid类来构造,里面提供了一些putObjectAt(int, int, index);之类的东西。似乎可以用。但是当我编程调试的时候发现在同一位置只能获取一个对象。这是很令人纳闷的事情。我想问一下Repast有提供什么好方法处理吗,不仅要能存进去,还要能方便的拿出来。
u1 {4 Z# v# a3 H, s: P" b: j2 W) Y private boolean findPotentialPartner(){
; `7 f- W) [1 }; t; T* h boolean value = false;) [- z A( K8 D/ |0 u% b# d4 U8 e' Q
9 O( s3 {6 Y2 d: ]: j OrderedMulti2DGrid grid = space.getCurrentAgentSpace();
/ A0 {4 O* [: Q. L; t5 F; }3 G5 P' c Iterator iterator = grid.getIteratorAt(x, y);
$ u( F& R% Z% ^" J3 x8 M) Q SexAgent ag1 = null; 1 {) u z) i/ k+ p
SexAgent [] potenAgent = new SexAgent[20];
0 P, h2 E% N# g: Y# A- w int goodNumber = 0;) v% O B+ L$ A0 u- s: p) M) B) O
while(iterator.hasNext()){
0 v7 b6 l4 i0 ]5 |, }) R# e2 V System.out.println("XXXXXXXXXXXXXXXXXXXXX");
C P8 w) i: V& j ag1 = (SexAgent)iterator.next();
" ^7 ^6 l7 ~# A# U. ^& ? if((ag1.sex == FEMALE) 7 q6 J9 h" u6 q* P
&&(!ag1.isCoupled())){6 {8 ^5 J- @8 ?" L0 s& B
System.out.println("YYYYYYYYYYYYYYYYYYYY");
* o; y' G; c) S" b: v potenAgent[goodNumber] = ag1;3 x6 G! Z9 e: d" p# x/ M3 V
goodNumber ++;! b# O5 O6 s5 f$ _2 u- l
}
1 B- g0 N5 k& H; R$ I7 ~2 b" D }% Q( K3 M* k# u5 P4 f
9 h& V' |8 Z: ]+ D8 r
if(goodNumber >0){
/ U r P) x7 x! i# m# F6 C! \( j System.out.println("ZZZZZZZZZZZZZZZZZZZZZZZZZZZZ"); " s3 }. s4 L, R" o6 h/ x J
Random rd1 = new Random();! v1 v9 u, j% S$ o
int select = rd1.nextInt(goodNumber);
0 f' Z+ @* ], E) A+ }2 z7 t potentialParterner = potenAgent[select];
: y8 X$ T4 o$ ]' n4 b- j. `' W2 w value = true;
' d( M/ z3 ]; H/ G Q! i U) Y; R }& {) D! V3 c A, o' ~$ Z6 U' k2 A" ?
return value;
/ t4 g- c8 }4 H }
m+ T' h' h7 U- h+ Y始终只能打印出XXXXXXXXXXXXXXXXXXXX,请各位帮帮忙。 |
|