|
|
5仿真币
最近做流行病模型,需要在一个网格里面放多个Agent,我查了一下API,使用OrderedMultiGrid类来构造,里面提供了一些putObjectAt(int, int, index);之类的东西。似乎可以用。但是当我编程调试的时候发现在同一位置只能获取一个对象。这是很令人纳闷的事情。我想问一下Repast有提供什么好方法处理吗,不仅要能存进去,还要能方便的拿出来。
5 b5 M) c8 O* ]4 ^+ n+ ?" N1 k4 v private boolean findPotentialPartner(){
6 u0 y/ I3 x: i! T0 v. B boolean value = false;5 Z9 \# R8 ^; t% ?) X C2 a: }
/ [' e0 p3 B; @0 o
OrderedMulti2DGrid grid = space.getCurrentAgentSpace();
; u: a R, V! A Iterator iterator = grid.getIteratorAt(x, y);2 ^& c/ R7 G% k G7 r
SexAgent ag1 = null;
' Q& n$ x0 W3 h SexAgent [] potenAgent = new SexAgent[20];. T, Q0 s ~9 A+ l3 W! C8 u, j% j
int goodNumber = 0;6 L+ U: E. V7 b& x/ z1 q' B
while(iterator.hasNext()){: ~) O. _1 I$ J" {! d0 Q- F: W
System.out.println("XXXXXXXXXXXXXXXXXXXXX");0 a1 Y- m1 i$ y, c
ag1 = (SexAgent)iterator.next();
( X) j. _( E1 N% x) R, ]' R if((ag1.sex == FEMALE) u3 C9 M3 X0 L$ b, D8 k
&&(!ag1.isCoupled())){
8 F" ^: M, d) O" m System.out.println("YYYYYYYYYYYYYYYYYYYY");, p1 Y6 f% `* G) B0 D5 w) g
potenAgent[goodNumber] = ag1;
5 K1 V: g" v& ?7 k1 f q, G goodNumber ++;
1 Q; z9 f( ]3 v+ {; e( I }. D0 p- m; P7 o' x6 u4 Z7 y
}
6 o2 E/ Z$ V4 ?- C9 X
9 S+ s. X# [. [5 H5 w/ j$ e7 U if(goodNumber >0){7 A2 R& _' V6 \' }
System.out.println("ZZZZZZZZZZZZZZZZZZZZZZZZZZZZ");
2 c- W& H/ F; F7 ? Random rd1 = new Random();! F! b7 X1 R( N. e
int select = rd1.nextInt(goodNumber);
! j7 ?) b% ~! V0 ~) b9 c potentialParterner = potenAgent[select];
# k4 B( F- a7 Q( Q/ [% S4 R value = true;
( s( C0 c/ B0 L _) v8 @ }8 \* X9 C+ p, {; {. k. F u( `
return value;
, U. v* d6 S8 p8 W9 P0 x }
- G+ V0 U* `+ O& E; T! g始终只能打印出XXXXXXXXXXXXXXXXXXXX,请各位帮帮忙。 |
|