|
|
5仿真币
最近做流行病模型,需要在一个网格里面放多个Agent,我查了一下API,使用OrderedMultiGrid类来构造,里面提供了一些putObjectAt(int, int, index);之类的东西。似乎可以用。但是当我编程调试的时候发现在同一位置只能获取一个对象。这是很令人纳闷的事情。我想问一下Repast有提供什么好方法处理吗,不仅要能存进去,还要能方便的拿出来。* c& F- X/ I2 i' O% X2 q
private boolean findPotentialPartner(){
6 S6 ?& w8 G* m% B4 F boolean value = false;
' ]- c2 y* P$ \ 7 h, _ w. f' W, T
OrderedMulti2DGrid grid = space.getCurrentAgentSpace();
+ W8 y, k% V; b: T8 Z7 { Iterator iterator = grid.getIteratorAt(x, y);) c$ s6 a# C) Y# e) z" f8 f5 Z
SexAgent ag1 = null; & n% H' @: x4 P+ b$ ^
SexAgent [] potenAgent = new SexAgent[20];: M$ L9 F! A( m& Q/ X8 _4 W
int goodNumber = 0;
& S' @9 T: y! c' h, x" J" A while(iterator.hasNext()){
) ~+ F4 ^. c. D0 H3 t; q System.out.println("XXXXXXXXXXXXXXXXXXXXX");% [9 j- z5 }) r) \, L- h
ag1 = (SexAgent)iterator.next();
3 F. X$ ?4 r; a& b$ v! K if((ag1.sex == FEMALE) v/ s5 G) } r1 r' k8 C. a
&&(!ag1.isCoupled())){
( e5 W" s* s6 p4 O% S" k" \ System.out.println("YYYYYYYYYYYYYYYYYYYY");
% \ c, ]. Q+ c3 n6 V potenAgent[goodNumber] = ag1;' {* i0 [, y! D6 |5 g2 X6 Y
goodNumber ++;
9 b8 E. D' R- Z* S8 J) _ }+ @4 Y0 @& B( D( ]' @6 p# A5 s7 }+ }
}
+ A$ j c8 S( D$ V2 U
7 c" z# p3 h! @6 t3 Y4 Z if(goodNumber >0){' L; ^+ Y0 }2 h4 Z
System.out.println("ZZZZZZZZZZZZZZZZZZZZZZZZZZZZ"); 4 g( V2 y9 |9 U5 G- t6 [
Random rd1 = new Random();/ \6 l. S# w2 w
int select = rd1.nextInt(goodNumber);: x, v9 I. s+ @2 E: }2 ` |' E
potentialParterner = potenAgent[select];
! V4 ]+ `( Q! e! _5 J value = true;) z& @# n# t2 k) T. ~2 K
}
0 X: J* K1 x, Z0 X9 }5 {5 N- A return value;
; ^% z! I# q) _/ ]' f }5 X/ v5 m3 j6 t' V
始终只能打印出XXXXXXXXXXXXXXXXXXXX,请各位帮帮忙。 |
|