|
|
5仿真币
最近做流行病模型,需要在一个网格里面放多个Agent,我查了一下API,使用OrderedMultiGrid类来构造,里面提供了一些putObjectAt(int, int, index);之类的东西。似乎可以用。但是当我编程调试的时候发现在同一位置只能获取一个对象。这是很令人纳闷的事情。我想问一下Repast有提供什么好方法处理吗,不仅要能存进去,还要能方便的拿出来。
1 z; [! h: j d' y$ R private boolean findPotentialPartner(){0 p! @( l* |; U1 w! s
boolean value = false;
; \4 `( q# e! @$ W8 u* V ; Q+ x5 h/ X6 ]7 U: B' i" @4 c: m
OrderedMulti2DGrid grid = space.getCurrentAgentSpace();, E' Y) T) u | V- Q6 D; `- U
Iterator iterator = grid.getIteratorAt(x, y);( y0 t( Z/ D$ E" u/ Q0 G' d1 d
SexAgent ag1 = null; : u! D; S' d0 v' c7 [
SexAgent [] potenAgent = new SexAgent[20];& a4 Q$ M1 y& A
int goodNumber = 0;, O4 M/ p- `6 X. z+ q, X
while(iterator.hasNext()){
1 b7 |2 q: q; M System.out.println("XXXXXXXXXXXXXXXXXXXXX");+ T" u( _7 N" M# k6 ~6 }3 u7 ~
ag1 = (SexAgent)iterator.next();
+ C v6 D9 n" B$ H3 G$ Q if((ag1.sex == FEMALE) ; Z" D# u8 d# s4 C
&&(!ag1.isCoupled())){* r7 X8 w7 q* C* l- \! Q( F
System.out.println("YYYYYYYYYYYYYYYYYYYY");
1 i/ v! t/ z& n6 L4 Z& Z" t) e potenAgent[goodNumber] = ag1;6 \( |( q# g+ d4 q3 I& _2 Q2 G8 s5 [
goodNumber ++;2 K2 T4 x8 n3 a6 d, [' X. [1 U3 v, z
}
, C$ f- O& H" G' z. d, f- \ }. ?! L( S+ |; Y4 J
' Q6 [" X" I( p if(goodNumber >0){
3 K0 x. o5 ?$ |" Q+ W4 S+ | System.out.println("ZZZZZZZZZZZZZZZZZZZZZZZZZZZZ"); : g; |, I( p4 V4 d }" k" R3 ^
Random rd1 = new Random();" M6 j( v3 B" a* d/ I Y6 C r
int select = rd1.nextInt(goodNumber);
6 `" f, Y0 u- Y4 ` potentialParterner = potenAgent[select];" k8 m# L7 h8 R6 F
value = true;" L& G" X) h' \- O4 I! T
}
5 B% c5 e1 a9 t6 K8 j. m1 W return value;# K) [$ r5 n. h* }) S/ A
}
+ r* a0 d$ x+ Q5 s4 t- ]始终只能打印出XXXXXXXXXXXXXXXXXXXX,请各位帮帮忙。 |
|