|
|
5仿真币
最近做流行病模型,需要在一个网格里面放多个Agent,我查了一下API,使用OrderedMultiGrid类来构造,里面提供了一些putObjectAt(int, int, index);之类的东西。似乎可以用。但是当我编程调试的时候发现在同一位置只能获取一个对象。这是很令人纳闷的事情。我想问一下Repast有提供什么好方法处理吗,不仅要能存进去,还要能方便的拿出来。: R8 g2 m# |$ n* E5 L
private boolean findPotentialPartner(){
# w- a: }2 x$ W* {9 K4 f3 X( v! {( V boolean value = false;
, O9 H' ?6 u/ z, t/ k9 |. } ! ^- u- b/ x7 M& _( t( @* O
OrderedMulti2DGrid grid = space.getCurrentAgentSpace();
7 g* X7 X6 E; Z1 J$ u' n) w c Iterator iterator = grid.getIteratorAt(x, y);
2 x$ c3 o8 _+ J( P' b8 C( s SexAgent ag1 = null; / V% V' ?* ]- c. _
SexAgent [] potenAgent = new SexAgent[20];
* ` a' n- ^9 \' ?. l int goodNumber = 0;
1 d; M3 U0 L/ J3 b8 M while(iterator.hasNext()){
+ ]( A; r# E8 g1 T5 f System.out.println("XXXXXXXXXXXXXXXXXXXXX");
. k0 P9 _7 A- R5 k ag1 = (SexAgent)iterator.next();$ |) r& {9 x( W
if((ag1.sex == FEMALE)
6 X. S$ j V* F# I, K &&(!ag1.isCoupled())){& B" \9 E: Z: n* T% ?3 L: `
System.out.println("YYYYYYYYYYYYYYYYYYYY");
2 @" e3 `4 o' X& _ potenAgent[goodNumber] = ag1;. s8 U" C6 Q0 s$ |/ Z
goodNumber ++;8 z" J+ f5 G k8 [. j; u
}
& s# U# A0 ~ s+ i }
' N2 L, D8 O9 V9 v5 r+ I- t8 Z" K- W
?6 P8 o( W# M- H! `/ h# v8 e if(goodNumber >0){
0 X/ x( x" v; w3 B( } System.out.println("ZZZZZZZZZZZZZZZZZZZZZZZZZZZZ"); 1 M. H- e0 t; I5 g2 [- w, Y; w8 n
Random rd1 = new Random();4 V* x+ f- A( o1 n# a1 e" o
int select = rd1.nextInt(goodNumber);
1 ^, {4 j5 r4 J" `% P9 E7 Z potentialParterner = potenAgent[select];. P; ?7 [( y1 {" b; j" t1 t
value = true;
& d+ R, {% l U8 | }
2 {9 F* j" v/ C/ M4 z `) P1 j. F' y return value;
* S) r: B; M) q& A }! P6 t3 m9 ~4 t+ P
始终只能打印出XXXXXXXXXXXXXXXXXXXX,请各位帮帮忙。 |
|