|
|
5仿真币
最近做流行病模型,需要在一个网格里面放多个Agent,我查了一下API,使用OrderedMultiGrid类来构造,里面提供了一些putObjectAt(int, int, index);之类的东西。似乎可以用。但是当我编程调试的时候发现在同一位置只能获取一个对象。这是很令人纳闷的事情。我想问一下Repast有提供什么好方法处理吗,不仅要能存进去,还要能方便的拿出来。
: g# e7 n& K, O' {: O2 i1 [ private boolean findPotentialPartner(){
2 y0 V% i* b7 T! e% c boolean value = false;4 W9 S% ~1 H& T; M# e6 |* l
1 H0 k& t4 v2 l- c+ s5 ?* K1 f+ `: T OrderedMulti2DGrid grid = space.getCurrentAgentSpace();
+ @+ ~- o, U7 t3 r5 a" A8 J Iterator iterator = grid.getIteratorAt(x, y);% c3 t" ]* i* o9 G$ \# N/ K0 g2 S
SexAgent ag1 = null;
8 {; g$ R1 T. R3 R. R- s9 r7 g SexAgent [] potenAgent = new SexAgent[20];, k0 t' P0 B" h- E" b- L q1 C
int goodNumber = 0;
: Z6 m- H0 ~" O& W7 J" o* s while(iterator.hasNext()){
) ~. n& d' a4 f( n System.out.println("XXXXXXXXXXXXXXXXXXXXX");! U& A8 e1 |, i' _) V
ag1 = (SexAgent)iterator.next();
+ m: C6 {' {8 V& y# y if((ag1.sex == FEMALE) " \; b% U$ v# N6 E% V
&&(!ag1.isCoupled())){1 u% e! i: \7 L
System.out.println("YYYYYYYYYYYYYYYYYYYY");% H% F2 i7 p1 `+ b! P
potenAgent[goodNumber] = ag1;# O* W2 b; ?$ _, o) L& }* S. e# t
goodNumber ++;1 Q% s( v4 g7 B$ X& g! L
}
6 z, I) O$ A: [) L4 W- G }1 [- z2 t! f+ P8 X3 Z/ F
# ?; u' |, F) `0 ]/ U. f- ?2 _1 |- P( q" [
if(goodNumber >0){
( b/ L# d y4 A% N System.out.println("ZZZZZZZZZZZZZZZZZZZZZZZZZZZZ");
) ]5 P3 I$ V0 B4 r$ _* F Random rd1 = new Random();
1 |4 G+ x E; L3 q$ S. R4 n int select = rd1.nextInt(goodNumber);7 k! _' `" X" k% e
potentialParterner = potenAgent[select];
* o9 q) k. [8 b- a value = true;
" X8 ]' [% Y8 a* @7 n( T" h }( q& i6 z7 N' Z; N5 N5 |
return value;
0 R5 m( g* y+ O+ o0 Q+ _ }& T: N7 ^# }( |! A/ V7 }
始终只能打印出XXXXXXXXXXXXXXXXXXXX,请各位帮帮忙。 |
|