|
|
5仿真币
最近做流行病模型,需要在一个网格里面放多个Agent,我查了一下API,使用OrderedMultiGrid类来构造,里面提供了一些putObjectAt(int, int, index);之类的东西。似乎可以用。但是当我编程调试的时候发现在同一位置只能获取一个对象。这是很令人纳闷的事情。我想问一下Repast有提供什么好方法处理吗,不仅要能存进去,还要能方便的拿出来。+ o$ Q0 c! ]1 Z+ {( w& F9 {* Y
private boolean findPotentialPartner(){$ M' V( B- P! F0 {+ \5 p
boolean value = false;
; ~/ I% }0 O0 e$ i: B+ d
/ c; |2 m" p4 L9 j* H4 B9 e( P OrderedMulti2DGrid grid = space.getCurrentAgentSpace();
$ [4 ~# z3 m( L' I. K) _3 e Iterator iterator = grid.getIteratorAt(x, y);6 `( s0 O3 q y* A% j8 ^: p
SexAgent ag1 = null; * E% g( `; _9 {8 V; ~
SexAgent [] potenAgent = new SexAgent[20];- o h# x5 A" D1 F
int goodNumber = 0;
$ }& f5 f) }9 _" U; n+ v) A6 k while(iterator.hasNext()){
. ?2 M2 P9 I# y7 S5 ^: n System.out.println("XXXXXXXXXXXXXXXXXXXXX");) J# I9 ]1 b" d: S2 E$ \6 H1 r
ag1 = (SexAgent)iterator.next();
3 S) k* L9 m1 j8 n if((ag1.sex == FEMALE) . R1 z, d( o. ~ y4 y$ p7 [& s1 n
&&(!ag1.isCoupled())){
3 ~" R8 I& N, `0 U1 r7 F9 g System.out.println("YYYYYYYYYYYYYYYYYYYY");. n. E! M0 T- j$ n5 Z3 `' D
potenAgent[goodNumber] = ag1;
" j3 I2 W& h3 o: L' F goodNumber ++;0 m* N! v0 J+ }; w5 L
}
/ w" d5 E; Z3 f9 l% C; O }$ C' R+ h& ^6 k! a- i5 p( p
+ n1 F9 u7 v% @% O5 G; | if(goodNumber >0){6 ]+ y. \3 F V0 O
System.out.println("ZZZZZZZZZZZZZZZZZZZZZZZZZZZZ");
; V$ V P# v2 U* } Random rd1 = new Random();
6 _3 B7 @1 s! X( r a! ]; L, ] int select = rd1.nextInt(goodNumber);
1 R# t9 {! o! z potentialParterner = potenAgent[select];
5 ~; v+ S) O% G5 |. d/ o value = true;
& a3 }% {# t% h' u+ A }
, M8 _3 Y/ X! t* U return value;# B! \9 |7 V6 Y0 N2 g& R
}" S1 d: c4 A9 `8 ?. `
始终只能打印出XXXXXXXXXXXXXXXXXXXX,请各位帮帮忙。 |
|