|
|
5仿真币
最近做流行病模型,需要在一个网格里面放多个Agent,我查了一下API,使用OrderedMultiGrid类来构造,里面提供了一些putObjectAt(int, int, index);之类的东西。似乎可以用。但是当我编程调试的时候发现在同一位置只能获取一个对象。这是很令人纳闷的事情。我想问一下Repast有提供什么好方法处理吗,不仅要能存进去,还要能方便的拿出来。
) j" O# Y" g2 C. h0 C: K8 a private boolean findPotentialPartner(){
' g& X' o) O1 n1 K boolean value = false; a! ]! t5 ~/ _5 U# S3 a
* h' ?1 L6 m3 I) s) j
OrderedMulti2DGrid grid = space.getCurrentAgentSpace();* b. W; G' I) i# j9 O$ n+ U+ N: F
Iterator iterator = grid.getIteratorAt(x, y);' C7 ?) o7 t7 p! Y
SexAgent ag1 = null; - v" s, R H- X. P. d" z
SexAgent [] potenAgent = new SexAgent[20];
; n% _9 L+ o( g9 C int goodNumber = 0;* B6 G4 ^) S/ D; \, \! {
while(iterator.hasNext()){' \2 _% |0 Y( i8 l B8 \+ ^7 Y
System.out.println("XXXXXXXXXXXXXXXXXXXXX");
4 A H" m1 b) c/ [6 Y ag1 = (SexAgent)iterator.next(); N W. q# K% p) W
if((ag1.sex == FEMALE) ; n; S- H0 U& P1 {; u P" O( B
&&(!ag1.isCoupled())){8 Z8 j4 H* H1 X; ]) K# D- H
System.out.println("YYYYYYYYYYYYYYYYYYYY");2 S0 L% U1 l M- G2 o. w/ Q, U+ S
potenAgent[goodNumber] = ag1;+ u* M: f- u. e) ]2 E1 V
goodNumber ++;6 H6 |% \9 d; t' k8 l
}
- @* r' D8 A3 Y' K }
& O' m$ Z0 z, q3 i
( v P9 |6 A& A+ T$ F% e if(goodNumber >0){2 Q N4 O* F, y7 F; w3 V$ P
System.out.println("ZZZZZZZZZZZZZZZZZZZZZZZZZZZZ");
2 f N9 Y% O8 l' {& X' _ Random rd1 = new Random();
4 @- w, P9 G h, k int select = rd1.nextInt(goodNumber);( i- X G* C; \, ^
potentialParterner = potenAgent[select];
3 I: ~" R% Z d$ w& g; Q value = true;' t# h+ ^& P I3 Z! N- M
}
, \( q8 z2 Z Y: l/ d return value;
* |( m+ K4 d* z7 T R }
3 q5 `: P0 {. A) X* ]( Z$ k始终只能打印出XXXXXXXXXXXXXXXXXXXX,请各位帮帮忙。 |
|