|
|
5仿真币
最近做流行病模型,需要在一个网格里面放多个Agent,我查了一下API,使用OrderedMultiGrid类来构造,里面提供了一些putObjectAt(int, int, index);之类的东西。似乎可以用。但是当我编程调试的时候发现在同一位置只能获取一个对象。这是很令人纳闷的事情。我想问一下Repast有提供什么好方法处理吗,不仅要能存进去,还要能方便的拿出来。" S" |2 Z T! Y5 z/ D/ u6 V+ R
private boolean findPotentialPartner(){5 F1 z3 ~* C2 h; G
boolean value = false;
" I4 L* q2 v4 a$ I- X
) W% M& }" x% w- f3 k6 V OrderedMulti2DGrid grid = space.getCurrentAgentSpace();
) ?/ G) r) ]' Z Iterator iterator = grid.getIteratorAt(x, y);
E* ]) o9 m0 G8 A& @; U SexAgent ag1 = null; # S7 A$ }' ]2 E* k
SexAgent [] potenAgent = new SexAgent[20];
( \! R5 m1 z7 t9 `+ [1 z int goodNumber = 0;
0 \3 K" Z$ |# ^$ {5 d+ A while(iterator.hasNext()){5 t! `, k) o- s5 x2 P8 g' q3 `
System.out.println("XXXXXXXXXXXXXXXXXXXXX");
3 M9 f& Z- _6 K2 C ag1 = (SexAgent)iterator.next();& L* z# |" Y7 o
if((ag1.sex == FEMALE)
+ c; s L8 D5 o: |; u &&(!ag1.isCoupled())){' l: r0 u; b% h. o5 [
System.out.println("YYYYYYYYYYYYYYYYYYYY");
; V, r" W, l+ T/ ?- d potenAgent[goodNumber] = ag1;0 G+ ?$ e+ I( Z# ~
goodNumber ++;
% O& k9 Y' ?: A }4 W6 w& e. W) ?$ f. }% w# N, b- x
}
1 v$ J- c, w" S) `! o- @
: p4 ]. M) Y3 z8 d! E if(goodNumber >0){+ V' t2 k* s; f5 Y, s
System.out.println("ZZZZZZZZZZZZZZZZZZZZZZZZZZZZ");
: Q' Y( `9 _2 K1 L8 F" S( V Random rd1 = new Random();
L* s) H9 [* _ |/ u( q. m% P2 _4 d& n int select = rd1.nextInt(goodNumber);' G1 P. a9 Y' Z
potentialParterner = potenAgent[select];
0 {) X4 J2 U' x. I9 P( | value = true; L* l8 ?' t3 w# b+ J3 z
}
; I, `# k+ ]( j1 _ return value;% O* V R/ D+ S3 _8 N9 K
}
" l# r# e& d7 j1 _2 N: A始终只能打印出XXXXXXXXXXXXXXXXXXXX,请各位帮帮忙。 |
|