|
|
5仿真币
最近做流行病模型,需要在一个网格里面放多个Agent,我查了一下API,使用OrderedMultiGrid类来构造,里面提供了一些putObjectAt(int, int, index);之类的东西。似乎可以用。但是当我编程调试的时候发现在同一位置只能获取一个对象。这是很令人纳闷的事情。我想问一下Repast有提供什么好方法处理吗,不仅要能存进去,还要能方便的拿出来。7 p L! s1 G, R" b+ j% x
private boolean findPotentialPartner(){
$ P" ] W; A" j5 d Q& H% ] boolean value = false;
9 d! G( _' F: M; W d, ]) j 9 }9 G" {, i# k2 j
OrderedMulti2DGrid grid = space.getCurrentAgentSpace();
9 C5 b$ ]5 L% x Iterator iterator = grid.getIteratorAt(x, y);
/ E+ @' d/ N. m+ E SexAgent ag1 = null; : a4 d2 m1 g5 M( P( J' X
SexAgent [] potenAgent = new SexAgent[20];# J; ]9 \) w$ \, J. F9 n [
int goodNumber = 0;- v4 z, @/ @8 i- b+ h( i* F4 U
while(iterator.hasNext()){: C4 Q0 S% F# z
System.out.println("XXXXXXXXXXXXXXXXXXXXX");
$ }( S1 m- c7 ~* D- {/ l2 i) C ag1 = (SexAgent)iterator.next();8 R2 L8 ^0 e9 I" Q2 O3 ~
if((ag1.sex == FEMALE) + f6 }, E8 ~2 r0 K! d
&&(!ag1.isCoupled())){; M3 i+ I! ?. F1 v) D6 N; A
System.out.println("YYYYYYYYYYYYYYYYYYYY");0 g! ]! k: ^( p8 @ v u0 n
potenAgent[goodNumber] = ag1;
+ O5 a; V5 t5 c5 i goodNumber ++;
/ _9 ?2 A; _" H) t1 [ }
# j5 R9 |- P& z6 a, A" g- i }
& O+ U% c1 T, ]& [# y6 ? 5 V5 ]9 g- O4 K$ n2 W' Q
if(goodNumber >0){9 \# d! ]- f1 ^5 g
System.out.println("ZZZZZZZZZZZZZZZZZZZZZZZZZZZZ");
! u" O! D7 Z5 [. s Random rd1 = new Random();( N: @9 t, o. ?/ m0 O/ B0 ^
int select = rd1.nextInt(goodNumber);
6 s6 `0 M9 f n& v potentialParterner = potenAgent[select];" o* G7 X* A3 d+ E6 D3 t
value = true;+ W4 y8 a7 x+ z8 o. t& O
}1 Q' F9 m* ]1 P' M' ` _; C n
return value;8 H! w* a+ X) z/ p- S) Y! s
}6 E4 F: _4 q" @' t9 H6 H
始终只能打印出XXXXXXXXXXXXXXXXXXXX,请各位帮帮忙。 |
|