|
|
5仿真币
最近做流行病模型,需要在一个网格里面放多个Agent,我查了一下API,使用OrderedMultiGrid类来构造,里面提供了一些putObjectAt(int, int, index);之类的东西。似乎可以用。但是当我编程调试的时候发现在同一位置只能获取一个对象。这是很令人纳闷的事情。我想问一下Repast有提供什么好方法处理吗,不仅要能存进去,还要能方便的拿出来。- _" T$ s* E4 F* u8 \
private boolean findPotentialPartner(){
* l3 W- P8 ^9 n7 S# u! D boolean value = false;7 e# X" I2 F7 S/ Z2 |3 Q$ x5 N
2 H6 y2 g5 n m1 J& E
OrderedMulti2DGrid grid = space.getCurrentAgentSpace();+ a( K1 P* @' k& N+ Q/ D% H4 N1 L
Iterator iterator = grid.getIteratorAt(x, y);
' i8 M6 n$ p6 p S SexAgent ag1 = null;
! T3 |) A4 b( P6 p SexAgent [] potenAgent = new SexAgent[20];0 L2 T9 x- E1 p2 F9 f) t) F0 C5 j
int goodNumber = 0;
7 ~5 {) s7 c& ^( L @ while(iterator.hasNext()){
4 X5 K+ p: | ?$ \ System.out.println("XXXXXXXXXXXXXXXXXXXXX");
* c6 ]& \3 {, I, I9 S( ]: Y ag1 = (SexAgent)iterator.next();
% V K8 m$ `+ B; J if((ag1.sex == FEMALE) - d, O: A, g2 T* {& U s o( n
&&(!ag1.isCoupled())){
( v* [6 \1 h7 C3 O$ Z6 ` System.out.println("YYYYYYYYYYYYYYYYYYYY");4 K/ T4 C6 x" g( U8 Z
potenAgent[goodNumber] = ag1;; Y0 a3 F0 B* `9 c! z: D i
goodNumber ++;
5 ~* v/ `0 R, b4 }& Q2 q }
! ^! l* |" J. T" K, r }
5 _% W' ]/ J% t# U7 b
; E: r, ^, [0 N4 p if(goodNumber >0){
2 e2 o6 e* G' E' L System.out.println("ZZZZZZZZZZZZZZZZZZZZZZZZZZZZ");
) i) D: N; I2 u% A1 { Random rd1 = new Random();
* C0 P1 @, P0 ~5 j4 ~0 c int select = rd1.nextInt(goodNumber);
" V6 P* J3 J# c1 m3 \ potentialParterner = potenAgent[select];- P* Y! y3 W% @5 `7 d7 p3 v( z8 Q
value = true;" b+ r! `% ?" k. d# {6 o0 p
}
( L* E E3 u" L- s( ^5 z return value;
; @2 M/ @& l% o5 j M4 q' v9 @ }: A% T9 }# T4 P7 \$ ]3 [( w0 f0 x
始终只能打印出XXXXXXXXXXXXXXXXXXXX,请各位帮帮忙。 |
|