|
|
5仿真币
最近做流行病模型,需要在一个网格里面放多个Agent,我查了一下API,使用OrderedMultiGrid类来构造,里面提供了一些putObjectAt(int, int, index);之类的东西。似乎可以用。但是当我编程调试的时候发现在同一位置只能获取一个对象。这是很令人纳闷的事情。我想问一下Repast有提供什么好方法处理吗,不仅要能存进去,还要能方便的拿出来。; L% `5 p/ H' ]6 k
private boolean findPotentialPartner(){) g6 f. z' n7 G* y9 ]
boolean value = false;
" q* K# u' c) t5 } & _" T$ q! Y$ q; `" F4 w& T
OrderedMulti2DGrid grid = space.getCurrentAgentSpace();& Y& S- N: s- z- L* p% }
Iterator iterator = grid.getIteratorAt(x, y);* V$ g% @0 e# w* ?
SexAgent ag1 = null; + ^& y6 E- l* k0 v: E9 e* z
SexAgent [] potenAgent = new SexAgent[20];
+ X$ q) ~8 r; o5 C int goodNumber = 0;
* \6 Z7 b% T5 }1 g/ j' U while(iterator.hasNext()){% R3 f5 [2 v0 I& F" X
System.out.println("XXXXXXXXXXXXXXXXXXXXX");
; D$ `. O0 y7 G5 I8 V5 d1 s+ I ag1 = (SexAgent)iterator.next();
1 y$ K9 l; `( N+ g( P3 X if((ag1.sex == FEMALE)
6 y. ~& a: @; j# }3 E5 H9 S9 S& H5 L3 v &&(!ag1.isCoupled())){! e* {2 M z; e5 b6 \( j# i
System.out.println("YYYYYYYYYYYYYYYYYYYY");
4 c' ^" G, j" L6 h7 }3 I8 r" ? potenAgent[goodNumber] = ag1;* H$ z7 S2 O% e- ]4 w' U
goodNumber ++;
6 w, _+ V; G3 s) _4 [9 @4 D }
/ O6 k* ^0 k4 y8 Q! u) M5 J& \9 m2 y }
+ W) C- o) I8 C9 f! h 5 T9 l: a k$ k% G$ t' P
if(goodNumber >0){9 q J( |" {. Q
System.out.println("ZZZZZZZZZZZZZZZZZZZZZZZZZZZZ"); 4 \) @- [1 w: l7 l
Random rd1 = new Random();
0 n. e6 S9 b8 q! F# [$ h! U int select = rd1.nextInt(goodNumber);
0 \# u, g: r3 w% Q. ~ potentialParterner = potenAgent[select];
6 n. p5 R0 o" ~; k2 A6 K; I value = true;. V3 f( n" f( E
}2 j) d! s( u# A* D! H; W& Y, \
return value;" x# b' y$ g, R n% Q
}& |& E! y" j: j4 ^+ i: @/ t2 r! F: J
始终只能打印出XXXXXXXXXXXXXXXXXXXX,请各位帮帮忙。 |
|