|
|
5仿真币
最近做流行病模型,需要在一个网格里面放多个Agent,我查了一下API,使用OrderedMultiGrid类来构造,里面提供了一些putObjectAt(int, int, index);之类的东西。似乎可以用。但是当我编程调试的时候发现在同一位置只能获取一个对象。这是很令人纳闷的事情。我想问一下Repast有提供什么好方法处理吗,不仅要能存进去,还要能方便的拿出来。' q; U6 [/ j5 s1 H, o3 b
private boolean findPotentialPartner(){
% K3 q% o* M1 a9 H. A# f A) _ boolean value = false;
- Y! L( k+ H1 H; ?
1 h7 A6 J/ Z; |# M: [" O: D OrderedMulti2DGrid grid = space.getCurrentAgentSpace();1 P: f# H. u! f( a/ N V
Iterator iterator = grid.getIteratorAt(x, y);: F8 D2 F& {0 G" B, |$ E# I
SexAgent ag1 = null; 2 |, i6 _) v! u3 @
SexAgent [] potenAgent = new SexAgent[20];( `) Y% J/ q6 X4 c1 U
int goodNumber = 0;9 F# E; |# V9 ?; B, D' ?
while(iterator.hasNext()){
6 h* t. z% C& w System.out.println("XXXXXXXXXXXXXXXXXXXXX");
# i% @5 C* M7 w E4 f1 P ag1 = (SexAgent)iterator.next();+ g7 c% v' e- V- e# f
if((ag1.sex == FEMALE)
; c4 O% S5 e1 I5 V &&(!ag1.isCoupled())){
' @( h) l3 k- h! O" `/ Y System.out.println("YYYYYYYYYYYYYYYYYYYY");2 _ h+ B$ ^- u9 |2 u
potenAgent[goodNumber] = ag1;
+ G: H, e9 s* G( W- { goodNumber ++;
6 [- t) Q' Y' F2 Y* z- P }
' g. R% P6 J% E }
* l# m" q( z9 N7 d1 V* w5 m; e 3 F8 ? }! H- C+ T7 n2 {& U
if(goodNumber >0){
5 ], G0 y+ y' H$ x& i5 c1 J System.out.println("ZZZZZZZZZZZZZZZZZZZZZZZZZZZZ"); 6 ?0 }% _4 I. i1 {: H5 I& `+ o: C
Random rd1 = new Random();$ D& H; ^! p+ i J# Y" f5 T
int select = rd1.nextInt(goodNumber);3 J+ i8 C" S6 v. ^3 X; _0 J( p5 C
potentialParterner = potenAgent[select];) l+ ]4 C/ C' P, ?/ Q
value = true;
" X& P! E4 ]$ k( N3 ]; d }
# C( w0 ]0 L, _$ a$ M8 _ return value;/ g2 P( |1 `1 h0 [
}" n% F% \8 j4 n6 l; x$ L! E9 i
始终只能打印出XXXXXXXXXXXXXXXXXXXX,请各位帮帮忙。 |
|