|
|
5仿真币
最近做流行病模型,需要在一个网格里面放多个Agent,我查了一下API,使用OrderedMultiGrid类来构造,里面提供了一些putObjectAt(int, int, index);之类的东西。似乎可以用。但是当我编程调试的时候发现在同一位置只能获取一个对象。这是很令人纳闷的事情。我想问一下Repast有提供什么好方法处理吗,不仅要能存进去,还要能方便的拿出来。7 y3 M# H& [* H
private boolean findPotentialPartner(){$ i2 a5 \4 B+ ^- U
boolean value = false;+ @' q1 |' } Y& f! U6 J* {
( h. B6 P) t3 ^" h OrderedMulti2DGrid grid = space.getCurrentAgentSpace();. X" y8 F* k5 A% |) q y. z5 ]
Iterator iterator = grid.getIteratorAt(x, y);" e$ l% L+ m4 ]
SexAgent ag1 = null; , X* v6 W8 H7 \3 v: X
SexAgent [] potenAgent = new SexAgent[20];
- F U% t3 J: R4 F% k, k' Q4 i int goodNumber = 0;
2 H1 b$ D) X, H& `( `* m while(iterator.hasNext()){
: p. ~( P( m. d8 z" W System.out.println("XXXXXXXXXXXXXXXXXXXXX");1 l/ Q0 c9 Y- j! L; x
ag1 = (SexAgent)iterator.next();
* C+ U3 H- R1 P8 j if((ag1.sex == FEMALE)
/ B$ j; Y( z. I2 K3 h5 S &&(!ag1.isCoupled())){
0 o g" s7 N, U0 }2 @ System.out.println("YYYYYYYYYYYYYYYYYYYY");& A; F4 F8 q, H" P) [
potenAgent[goodNumber] = ag1;
: B- V/ r- S. k. @, @ goodNumber ++;" j6 ]9 m" t8 l" X& E
}
! R1 H' \& S7 o/ a% e& h1 [! | }% F Z- [9 @7 W3 H* a/ x
% I, e2 k% {% q8 D. R; b7 W if(goodNumber >0){% |; {2 W" Z6 {4 q+ z
System.out.println("ZZZZZZZZZZZZZZZZZZZZZZZZZZZZ"); 4 V2 R/ M* x; e
Random rd1 = new Random();
" [# x9 y) Q/ ~7 B! Y( i int select = rd1.nextInt(goodNumber);
& X/ q2 w+ x6 ] Y0 }, @" d potentialParterner = potenAgent[select];, [% A1 ]7 r# u
value = true;
( S& w. s+ x# Z( k# j }
2 C6 R ]# L3 I, i( j5 d2 ? return value;
9 _! |' I% o3 Z, w3 {( ]: r2 T }6 k' v3 W' ^; T9 m6 u% u: K/ m3 I) Z" I
始终只能打印出XXXXXXXXXXXXXXXXXXXX,请各位帮帮忙。 |
|