|
|
5仿真币
最近做流行病模型,需要在一个网格里面放多个Agent,我查了一下API,使用OrderedMultiGrid类来构造,里面提供了一些putObjectAt(int, int, index);之类的东西。似乎可以用。但是当我编程调试的时候发现在同一位置只能获取一个对象。这是很令人纳闷的事情。我想问一下Repast有提供什么好方法处理吗,不仅要能存进去,还要能方便的拿出来。' `2 [& Y& ]6 a4 y4 ~2 P% J
private boolean findPotentialPartner(){
9 U( @4 u* @+ P0 E# l boolean value = false;0 ~# U3 f* v- x8 p1 u& M2 b
1 N, q2 O2 V% [% ~- p% x& k
OrderedMulti2DGrid grid = space.getCurrentAgentSpace();
( q) s5 \1 Y. J Iterator iterator = grid.getIteratorAt(x, y);
2 u- ]9 V! U; ~+ _) `- f2 ~& S$ p SexAgent ag1 = null;
8 ^' o, s; A/ p7 e* }4 Q SexAgent [] potenAgent = new SexAgent[20];
0 n5 d+ g; w `: f int goodNumber = 0;
' X4 C% ?+ p& R; q5 A6 D3 r/ t while(iterator.hasNext()){8 |9 u. z% G' G' Z& `3 Q
System.out.println("XXXXXXXXXXXXXXXXXXXXX");
2 b" r$ O# E" `4 P3 t+ }. k! i ag1 = (SexAgent)iterator.next();
" I' d+ A$ L6 R! Y/ I) G. Q if((ag1.sex == FEMALE)
( x! D, i1 u! _$ v! l% z8 z6 k4 r* I5 x &&(!ag1.isCoupled())){
& k% B: T) T1 Q q. K' g0 P1 U. {. l System.out.println("YYYYYYYYYYYYYYYYYYYY");
, l& e# A+ f' F. V potenAgent[goodNumber] = ag1;. \: }. H8 S9 b2 |: P
goodNumber ++;
" b5 H' c- y! R }
, o% k& w1 w( H: A }
' A: l* A& ~/ Q2 ?0 X$ g 7 d2 C6 Z6 j: y8 L% T4 x |
if(goodNumber >0){+ J6 B+ o& X( A
System.out.println("ZZZZZZZZZZZZZZZZZZZZZZZZZZZZ");
- a! ?5 S0 N1 T Random rd1 = new Random();: l6 I9 M1 V. a( T0 q! s+ q
int select = rd1.nextInt(goodNumber);% Q$ X+ y& t/ P8 l: i4 v
potentialParterner = potenAgent[select];8 o" C$ p- K8 z( A
value = true;* D! s; V$ y' m. C
}
4 T( a# [7 E) F$ D4 m8 s6 t+ H return value;* C0 b! ~+ H9 D3 p3 l+ M
}
/ f) G3 }- ]" ^& k* P- J始终只能打印出XXXXXXXXXXXXXXXXXXXX,请各位帮帮忙。 |
|