|
|
5仿真币
最近做流行病模型,需要在一个网格里面放多个Agent,我查了一下API,使用OrderedMultiGrid类来构造,里面提供了一些putObjectAt(int, int, index);之类的东西。似乎可以用。但是当我编程调试的时候发现在同一位置只能获取一个对象。这是很令人纳闷的事情。我想问一下Repast有提供什么好方法处理吗,不仅要能存进去,还要能方便的拿出来。
8 v l* g: i& |2 E% {/ | private boolean findPotentialPartner(){
" ?2 _/ z3 T) e$ L- x boolean value = false;
' }& u u/ W7 s# l) _# o 2 [5 Y2 t% C6 U
OrderedMulti2DGrid grid = space.getCurrentAgentSpace();6 o# Z, k2 v! V
Iterator iterator = grid.getIteratorAt(x, y);6 I( H7 h! k5 i4 f1 b1 t- X1 A
SexAgent ag1 = null; ! D5 `1 `3 E+ n( i( x
SexAgent [] potenAgent = new SexAgent[20];6 j0 Q9 H7 ?4 K
int goodNumber = 0;; b- p W! }. [/ M9 `6 r* g: Y
while(iterator.hasNext()){4 @0 R9 y, z5 ?
System.out.println("XXXXXXXXXXXXXXXXXXXXX");4 q0 X! P6 I: N+ i! [
ag1 = (SexAgent)iterator.next();
. M9 J$ }8 U) s1 Y( y1 x if((ag1.sex == FEMALE)
4 C7 t& G" b8 F$ A& S/ s1 \3 ~ &&(!ag1.isCoupled())){
2 l& t, M: _7 J& Q6 B6 R1 F: T System.out.println("YYYYYYYYYYYYYYYYYYYY");1 `) z } b4 v( s! @+ t+ r! S& h0 b
potenAgent[goodNumber] = ag1;1 M, }7 G' P+ S5 ]
goodNumber ++;
! D* R6 r# y2 @* s# i5 h) U }& Y& S9 I. w* K" ?( H! n
}
7 j/ L2 ?- S) q! P
* b0 y& b* }' `) d2 ~$ ~3 B# d if(goodNumber >0){
8 Y( D3 a8 I { System.out.println("ZZZZZZZZZZZZZZZZZZZZZZZZZZZZ"); / ]* V& ^) n9 U+ h5 F
Random rd1 = new Random();
/ _3 x8 O) }: B( w; j& T1 Z int select = rd1.nextInt(goodNumber);
5 J; Q8 C1 r9 u potentialParterner = potenAgent[select];
/ F; P {1 }, X2 W value = true;
0 ^' h# h1 h' O }
$ G m6 Y3 ~7 c. J8 d$ W return value;
! ~" s5 _6 i" R$ @8 [% e4 m E* w }
* R( m" z b' E- c# n/ b' v2 K, t始终只能打印出XXXXXXXXXXXXXXXXXXXX,请各位帮帮忙。 |
|