|
|
5仿真币
最近做流行病模型,需要在一个网格里面放多个Agent,我查了一下API,使用OrderedMultiGrid类来构造,里面提供了一些putObjectAt(int, int, index);之类的东西。似乎可以用。但是当我编程调试的时候发现在同一位置只能获取一个对象。这是很令人纳闷的事情。我想问一下Repast有提供什么好方法处理吗,不仅要能存进去,还要能方便的拿出来。. W# D' t5 a( \0 {
private boolean findPotentialPartner(){
' E% @! Z- M: j- u/ ^8 o D- B* G boolean value = false;
! J E: o2 I/ h% t& N$ D % e. k" X- `( }! V
OrderedMulti2DGrid grid = space.getCurrentAgentSpace();/ ]) S) ~& l; ^% s
Iterator iterator = grid.getIteratorAt(x, y);9 \3 d. t( O' ]( L! O4 U
SexAgent ag1 = null; 4 x2 x" A$ p/ c# K
SexAgent [] potenAgent = new SexAgent[20];
/ G i9 u6 [6 p4 }4 n int goodNumber = 0;. V- U8 R+ z+ n/ {* g9 g7 O
while(iterator.hasNext()){
. ^8 H9 `5 F( B1 p3 o, M0 e4 f System.out.println("XXXXXXXXXXXXXXXXXXXXX");! o: O+ Z5 b8 A1 F
ag1 = (SexAgent)iterator.next();
4 D! T- t" q% I" h ] if((ag1.sex == FEMALE)
. ?0 k2 Y5 |: E: {- N9 @2 e- D6 o &&(!ag1.isCoupled())){6 }# m6 h7 r+ T/ v4 O
System.out.println("YYYYYYYYYYYYYYYYYYYY");
9 V: y9 [1 \7 l5 X+ V5 m potenAgent[goodNumber] = ag1;. d0 _- Y" M' a5 P. ]: g; I
goodNumber ++;
1 q5 w# j& z2 Z1 k7 r }: I& E: ~9 {: c: V/ j
}, z$ L6 [/ x9 ~% J; c$ \+ A# X
t, k- y# T& f
if(goodNumber >0){! M% G. p1 b% l, S/ P) v# Y8 {
System.out.println("ZZZZZZZZZZZZZZZZZZZZZZZZZZZZ");
2 ] U( ^/ c- W. ]$ ]$ ] Random rd1 = new Random();7 J2 L, s! I& E. J* `# d1 s
int select = rd1.nextInt(goodNumber);4 D* d' l9 x, X) C& ^; o9 y
potentialParterner = potenAgent[select];8 [! }; J' l3 H: b
value = true;
+ k9 `( L+ _( R }3 _) @ ~) K) q1 t- m# u9 L
return value;
6 @! H3 x, ^1 s }1 ~+ {7 x, w* [; _" H5 ?+ q
始终只能打印出XXXXXXXXXXXXXXXXXXXX,请各位帮帮忙。 |
|