|
|
5仿真币
最近做流行病模型,需要在一个网格里面放多个Agent,我查了一下API,使用OrderedMultiGrid类来构造,里面提供了一些putObjectAt(int, int, index);之类的东西。似乎可以用。但是当我编程调试的时候发现在同一位置只能获取一个对象。这是很令人纳闷的事情。我想问一下Repast有提供什么好方法处理吗,不仅要能存进去,还要能方便的拿出来。% a. y6 a* E" A
private boolean findPotentialPartner(){! R+ x3 B; i# c6 h3 U' P2 q% H
boolean value = false;6 ?4 p( d$ P. L
y: y8 m; m9 R, E+ J: f
OrderedMulti2DGrid grid = space.getCurrentAgentSpace();
5 G9 D( ?' s9 w0 E( @/ W Iterator iterator = grid.getIteratorAt(x, y);
- H n% W" d6 B! s; p SexAgent ag1 = null;
. v( G3 \% G' r1 T/ r. W, e* z, v) _ SexAgent [] potenAgent = new SexAgent[20];
. `3 F' g+ G5 z int goodNumber = 0;
; n* \# e1 y- N9 s0 g5 ^ while(iterator.hasNext()){. W5 c0 W$ |6 X( E1 w( i
System.out.println("XXXXXXXXXXXXXXXXXXXXX");
; U" V; S4 b( s3 o0 f ag1 = (SexAgent)iterator.next();; Z4 F$ P& F) A' l& V* b
if((ag1.sex == FEMALE)
; N/ m+ y2 d% f" b \ &&(!ag1.isCoupled())){5 a% W' i8 ^( I+ f6 d
System.out.println("YYYYYYYYYYYYYYYYYYYY");! X+ s; e) F# ?% t8 L% j! V
potenAgent[goodNumber] = ag1;6 n3 I3 E; }$ V! z4 A" P i
goodNumber ++;
) u. s, K0 B7 b) B1 U }! y" d' e% ~! u" T( i; D; S% H
}5 B1 \- `( D8 A# Q
! Z: P2 ~7 _* m3 r" A- | if(goodNumber >0){* Q7 z/ F) y( k5 p
System.out.println("ZZZZZZZZZZZZZZZZZZZZZZZZZZZZ"); , d& V/ Q. R- d) t7 K0 Q
Random rd1 = new Random();
! o) T2 i0 y+ @ l5 g7 w' m int select = rd1.nextInt(goodNumber);8 f5 Y% Y! _! |
potentialParterner = potenAgent[select];
]3 ~: f4 [/ I. W7 Q. M' L value = true;- L- B& j) T, G6 e5 \1 I' q1 Y+ T
}2 C0 H: Z: g' J* z
return value;9 O' Q; T- n( T9 S1 V
}7 q" A4 L( z( P3 I! D5 E9 ]
始终只能打印出XXXXXXXXXXXXXXXXXXXX,请各位帮帮忙。 |
|