|
5仿真币
最近做流行病模型,需要在一个网格里面放多个Agent,我查了一下API,使用OrderedMultiGrid类来构造,里面提供了一些putObjectAt(int, int, index);之类的东西。似乎可以用。但是当我编程调试的时候发现在同一位置只能获取一个对象。这是很令人纳闷的事情。我想问一下Repast有提供什么好方法处理吗,不仅要能存进去,还要能方便的拿出来。
4 S9 g+ u" O) w8 c private boolean findPotentialPartner(){
) N: A/ y( q) T- H* R X! { boolean value = false;
: N: u4 y: `" L9 ?- j2 I! M( J* ]$ O! t
* Z, _+ H- j/ D6 f: h OrderedMulti2DGrid grid = space.getCurrentAgentSpace();- p: f" j1 G1 C r8 S% v8 Y0 x8 Z. F! t
Iterator iterator = grid.getIteratorAt(x, y);, s# ~+ L- ^4 }8 \
SexAgent ag1 = null;
" f* \& |# f9 R* w) M5 _* l2 P SexAgent [] potenAgent = new SexAgent[20];* X; `) q$ P- C/ t' W$ N0 f
int goodNumber = 0;$ s' p( y8 @3 E Q6 q/ i& w
while(iterator.hasNext()){. s& Q" g x' k4 a
System.out.println("XXXXXXXXXXXXXXXXXXXXX");
. q# A7 p7 g. P% \4 ~* Z% v1 E ag1 = (SexAgent)iterator.next();+ S- q% P; [9 i7 j1 t. `
if((ag1.sex == FEMALE) 6 b0 @" H1 N9 {, [. o
&&(!ag1.isCoupled())){4 u, x% J. ^2 |2 J* W$ Z
System.out.println("YYYYYYYYYYYYYYYYYYYY");
( }2 o2 G0 [* R. s; N potenAgent[goodNumber] = ag1;9 G: Z. j s2 X7 B# |
goodNumber ++;- C$ x2 ]# S( h* @& {! T& [
}
' t( \* k; a, n/ x+ c" b4 X }4 I; W# o; h$ W. {4 @- K
; N! E9 Q, E: V" b/ N
if(goodNumber >0){
* F; n2 Z$ ~1 Y System.out.println("ZZZZZZZZZZZZZZZZZZZZZZZZZZZZ"); * d. W8 ^6 r' p% F
Random rd1 = new Random();
/ O+ f& I- \. ?0 I. B" p* Y int select = rd1.nextInt(goodNumber);
; E, M$ k/ J2 ], M. \ potentialParterner = potenAgent[select];. _/ {$ O) ^2 U, @$ P, v) ^! q! E
value = true;
8 N6 g; F, e$ I* h% z$ q/ y }1 g: K& S5 {' |
return value;
R# k$ M7 ]7 q7 D. U1 N; B }$ D; ^/ _0 R; W+ C; K
始终只能打印出XXXXXXXXXXXXXXXXXXXX,请各位帮帮忙。 |
|