|
|
5仿真币
最近做流行病模型,需要在一个网格里面放多个Agent,我查了一下API,使用OrderedMultiGrid类来构造,里面提供了一些putObjectAt(int, int, index);之类的东西。似乎可以用。但是当我编程调试的时候发现在同一位置只能获取一个对象。这是很令人纳闷的事情。我想问一下Repast有提供什么好方法处理吗,不仅要能存进去,还要能方便的拿出来。3 u' o# N/ X: t
private boolean findPotentialPartner(){; Z @. A( C; e5 E0 X: b+ x
boolean value = false;
" y P* y: |' C6 G/ E) ?& q- Q
( g& C) r& Y1 {0 n( m0 C5 P3 Z OrderedMulti2DGrid grid = space.getCurrentAgentSpace();
( F! |) b* R+ {/ V$ ]: G Iterator iterator = grid.getIteratorAt(x, y);
! z! V& {; A# g/ r9 X/ ^+ O SexAgent ag1 = null;
# Z) g7 T! d1 K8 x SexAgent [] potenAgent = new SexAgent[20];
Q' [$ I' I# Q* f7 e( s int goodNumber = 0;9 ~" Q' ]; ]3 v3 w
while(iterator.hasNext()){
/ j& A' q! s2 D8 W* c5 l3 n/ j System.out.println("XXXXXXXXXXXXXXXXXXXXX");
J+ p8 K0 R5 R3 m) x1 a ag1 = (SexAgent)iterator.next();
9 N/ f4 K9 D/ T! j! o" e if((ag1.sex == FEMALE)
3 W$ H' @ N7 T; w: a &&(!ag1.isCoupled())){
- w# {; m" k& }0 N+ p! e) P' z$ |) x System.out.println("YYYYYYYYYYYYYYYYYYYY");- E+ q" {/ D1 A9 `. A
potenAgent[goodNumber] = ag1;7 u& e& K2 j# u8 a+ N3 P
goodNumber ++;
* g9 ^4 f5 T1 a6 N, \5 q }; g$ U" Z1 a J2 j1 H9 n9 C
}
2 I2 \ G9 O D: f
3 _" P: @, T; H3 x. M# }+ `% Z* b if(goodNumber >0){* H2 g/ t. Q' T
System.out.println("ZZZZZZZZZZZZZZZZZZZZZZZZZZZZ");
8 x, D2 [4 P. \9 l' U4 A+ w Random rd1 = new Random();" \9 z/ c% g* e* x& s
int select = rd1.nextInt(goodNumber);1 M" q- K' T. e' K' q7 |
potentialParterner = potenAgent[select];
( W" o) m% G. g7 B value = true;9 A0 w7 f, Q* B( F7 s- a" y
}
) e; `. A0 G9 }" \* O( b return value;! }9 x1 s9 }+ K; X& M
}
' [' M# X- [7 H- }- Y始终只能打印出XXXXXXXXXXXXXXXXXXXX,请各位帮帮忙。 |
|