|
|
5仿真币
最近做流行病模型,需要在一个网格里面放多个Agent,我查了一下API,使用OrderedMultiGrid类来构造,里面提供了一些putObjectAt(int, int, index);之类的东西。似乎可以用。但是当我编程调试的时候发现在同一位置只能获取一个对象。这是很令人纳闷的事情。我想问一下Repast有提供什么好方法处理吗,不仅要能存进去,还要能方便的拿出来。; M0 h4 V. M5 D
private boolean findPotentialPartner(){
# D' s. ?1 {; v7 h boolean value = false;
P1 H; v4 L3 l }% S. ]2 y 5 J/ O9 }) e' l' l' Q7 n
OrderedMulti2DGrid grid = space.getCurrentAgentSpace();; {, h) n. }' O) J3 W" ?
Iterator iterator = grid.getIteratorAt(x, y);7 J; Q' Y0 X" u9 ^# i8 `$ S5 v z6 {* x
SexAgent ag1 = null;
4 n2 T4 p3 @! L( y SexAgent [] potenAgent = new SexAgent[20];& c$ H" p: U. \% C5 r
int goodNumber = 0;) g4 H) L. e! ~/ e7 ^
while(iterator.hasNext()){
# p: ^7 ^" n' A1 U6 \3 [: g$ S( ~ System.out.println("XXXXXXXXXXXXXXXXXXXXX");
4 P0 l, ]& ]3 h* } ag1 = (SexAgent)iterator.next();+ r# }3 K# s8 U* I' @
if((ag1.sex == FEMALE)
& F( @) [' Q0 g2 |7 e) L' I- N3 c &&(!ag1.isCoupled())){/ M- q) v: E* m, w# o: {( ~+ [& x W) g/ b
System.out.println("YYYYYYYYYYYYYYYYYYYY");) ? i0 f3 H2 @% v3 P: y9 J
potenAgent[goodNumber] = ag1;
5 D' q1 e* S0 W4 C4 a' v: z goodNumber ++;
* q& F: M+ w$ Z4 _0 D* ? }
7 M4 f8 U, U: z+ E) \ `7 \ }/ y$ z1 ~3 e) h6 w
( s2 n" a' n$ ^% C
if(goodNumber >0){) G5 B" O& D" l& _2 ]% |
System.out.println("ZZZZZZZZZZZZZZZZZZZZZZZZZZZZ"); # n$ {: g% L' v F) |1 X: i) E
Random rd1 = new Random();
+ ?9 a' V* r' x( N6 v* m) B5 C int select = rd1.nextInt(goodNumber);
0 l; z5 E' B# g! _% s+ N/ K; L4 h- K' Z potentialParterner = potenAgent[select];. j v5 v1 x4 {, C" q4 b
value = true;
0 u9 p6 R2 L3 R% A6 r }
! i9 C. x( x5 J [( Q6 U6 l s return value;' Y2 P3 T+ b8 X! e. @$ _2 B S
}: i a4 p9 R8 Z# e* r% n
始终只能打印出XXXXXXXXXXXXXXXXXXXX,请各位帮帮忙。 |
|