|
|
5仿真币
最近做流行病模型,需要在一个网格里面放多个Agent,我查了一下API,使用OrderedMultiGrid类来构造,里面提供了一些putObjectAt(int, int, index);之类的东西。似乎可以用。但是当我编程调试的时候发现在同一位置只能获取一个对象。这是很令人纳闷的事情。我想问一下Repast有提供什么好方法处理吗,不仅要能存进去,还要能方便的拿出来。
( s% y) O6 p0 S" x0 _ private boolean findPotentialPartner(){
" c' J8 l% x" ? boolean value = false;5 G6 ^- }+ D& P1 G! {( f. w
' J t2 }' {+ } u6 i OrderedMulti2DGrid grid = space.getCurrentAgentSpace();
, s+ J$ R8 |" B1 y! B Iterator iterator = grid.getIteratorAt(x, y);
: W; C* d( V2 j! S) s SexAgent ag1 = null;
- n2 O& C7 m1 {6 Z; K9 r) ~0 @+ h SexAgent [] potenAgent = new SexAgent[20];
' `# {5 U2 F( D4 \1 w l! B8 c. o) S int goodNumber = 0;5 b5 k+ s9 ?" f* r0 Q
while(iterator.hasNext()){
! t, i" K! B) s# Y0 \ System.out.println("XXXXXXXXXXXXXXXXXXXXX");! A# G1 N" M) W6 c; X; [
ag1 = (SexAgent)iterator.next();# Y+ F% c" L7 d" f& V
if((ag1.sex == FEMALE) : B) @7 a/ m+ [8 l
&&(!ag1.isCoupled())){5 I Y9 ?5 [3 y6 I2 {6 {8 ]- O
System.out.println("YYYYYYYYYYYYYYYYYYYY");
- e* i) S; r6 Y: [( I potenAgent[goodNumber] = ag1;
$ ?2 S8 c w8 q3 v1 I" O' S2 } goodNumber ++;4 a; ^4 n/ k1 ]3 n+ O8 k* c/ l5 }
}- N% F! E( F/ l# e
}
4 A% p# s, Y. f( {8 K & C2 N5 Z* R |* j
if(goodNumber >0){5 g8 V* _1 ?, t& ]* P. Q
System.out.println("ZZZZZZZZZZZZZZZZZZZZZZZZZZZZ");
! H5 g9 e3 G& U* H# ^$ G+ R# I4 A Random rd1 = new Random();
* G d7 `9 O( D/ n; G9 O7 e int select = rd1.nextInt(goodNumber);
7 m, N+ Z1 y/ j/ u- Z! i potentialParterner = potenAgent[select];
3 n% U" |$ j7 F4 `- A; e value = true;$ M5 y" i7 x+ ~4 u
}
8 P3 E- s' F9 J( [' D- n7 b5 ^ return value;" l$ a# }, C5 E5 V0 _( \
}
2 O- n- H9 R2 e+ \- e7 h始终只能打印出XXXXXXXXXXXXXXXXXXXX,请各位帮帮忙。 |
|