|
|
5仿真币
最近做流行病模型,需要在一个网格里面放多个Agent,我查了一下API,使用OrderedMultiGrid类来构造,里面提供了一些putObjectAt(int, int, index);之类的东西。似乎可以用。但是当我编程调试的时候发现在同一位置只能获取一个对象。这是很令人纳闷的事情。我想问一下Repast有提供什么好方法处理吗,不仅要能存进去,还要能方便的拿出来。
/ O7 s) H* t" ^0 ^- Z private boolean findPotentialPartner(){
: E/ i1 C8 j/ N% s) x boolean value = false;
% }$ `' u6 S6 Y: [ * X% i; |: E* y1 _3 M/ A/ @4 [
OrderedMulti2DGrid grid = space.getCurrentAgentSpace();1 T! j5 B {+ U) y. k. p% X' M& |
Iterator iterator = grid.getIteratorAt(x, y);
2 s( X4 }+ \: `9 ` SexAgent ag1 = null;
( g+ O. n& g: ] c& h2 R SexAgent [] potenAgent = new SexAgent[20];
9 f, D/ H8 H) ]5 z) D( i int goodNumber = 0;
* P+ v, @9 B8 n$ E( } while(iterator.hasNext()){# `3 ]6 `; S: S+ ]' ?$ [0 \
System.out.println("XXXXXXXXXXXXXXXXXXXXX");3 k2 |8 v; V8 r3 T
ag1 = (SexAgent)iterator.next();' s! Q2 ~" v. B4 S- i0 _
if((ag1.sex == FEMALE) 9 F( U M% n, _7 q$ L7 ~: U
&&(!ag1.isCoupled())){
& [. g2 F' @' } System.out.println("YYYYYYYYYYYYYYYYYYYY");! K3 I* F& {% e/ S( t% W& P# G
potenAgent[goodNumber] = ag1;
) J: r( z" V( ?. b3 A" _, K goodNumber ++;0 h6 J3 B/ n& e" H, _* U4 o l
}
8 N' s& g$ @3 H1 ^% | @# x }
" Z: V( O% m' C5 ?' v' h# H( K
+ B! b1 x ~2 P5 m% T% B if(goodNumber >0){4 Y! k; O0 j+ T) T
System.out.println("ZZZZZZZZZZZZZZZZZZZZZZZZZZZZ");
0 h3 a' V0 n* S9 J0 h; } Random rd1 = new Random();
* R9 s. J* U4 s int select = rd1.nextInt(goodNumber);
' E+ f4 Q: s. ] potentialParterner = potenAgent[select];2 y3 i; r5 U+ C6 G$ h% X2 l( D
value = true;
; y) a' J) C7 M }
( s) W4 n% j- H0 \2 J return value;
0 O$ w& V) d6 i" `) z/ p# e }
6 p! B; F: }( {/ @6 `& K: V" T始终只能打印出XXXXXXXXXXXXXXXXXXXX,请各位帮帮忙。 |
|