|
|
5仿真币
最近做流行病模型,需要在一个网格里面放多个Agent,我查了一下API,使用OrderedMultiGrid类来构造,里面提供了一些putObjectAt(int, int, index);之类的东西。似乎可以用。但是当我编程调试的时候发现在同一位置只能获取一个对象。这是很令人纳闷的事情。我想问一下Repast有提供什么好方法处理吗,不仅要能存进去,还要能方便的拿出来。* R! `0 M/ L" `. [
private boolean findPotentialPartner(){
+ u% C& i4 b! V4 | Y- H0 B/ A boolean value = false;
7 q- k- ^& B) \1 F j' k! C% `8 r
OrderedMulti2DGrid grid = space.getCurrentAgentSpace();
$ y, y2 V3 [& d+ } Iterator iterator = grid.getIteratorAt(x, y);
7 t- [" Y9 V2 Y& ?: x, \0 } SexAgent ag1 = null; & U' B5 D+ G- S
SexAgent [] potenAgent = new SexAgent[20];8 {7 j4 H r8 L' w% y# K% b
int goodNumber = 0;
# D. X& ~& p1 M$ B; [2 G6 k) C while(iterator.hasNext()){
3 z( T$ j# @8 m System.out.println("XXXXXXXXXXXXXXXXXXXXX");) W% D' d6 p, m( X7 ^
ag1 = (SexAgent)iterator.next();" Y7 X \5 W3 _- n0 f2 ~
if((ag1.sex == FEMALE)
& j* X$ T7 C, r0 i; a# m &&(!ag1.isCoupled())){
( P u% r7 C: M0 d8 d System.out.println("YYYYYYYYYYYYYYYYYYYY");
* U+ _* G/ z$ Q! \ o! \8 u potenAgent[goodNumber] = ag1;
' F) O# ~9 h' ~" q goodNumber ++;
( A+ n X9 k) d: h6 U+ s }- y7 |+ V- }( d* ~5 c8 c5 {% N
}
9 Q; R5 h# [1 R/ ?7 [3 Q7 f4 T) R 2 ` E9 i/ d* z$ G1 `( V- W
if(goodNumber >0){
3 X+ j6 S: t2 x! r A$ N4 u3 C$ Y9 b System.out.println("ZZZZZZZZZZZZZZZZZZZZZZZZZZZZ"); ; Z1 _3 M3 b8 ]0 H H
Random rd1 = new Random();
8 Z, Z7 D( E+ k# a8 H int select = rd1.nextInt(goodNumber);- L9 E0 p/ Y' c
potentialParterner = potenAgent[select];
9 \6 z% o' n) G value = true;& X2 n9 _' m) g- Z: r
}& b* @: S. e/ ^8 X" A9 N
return value;
: U* I: H. g2 E' K }
1 P& h" {3 n% s始终只能打印出XXXXXXXXXXXXXXXXXXXX,请各位帮帮忙。 |
|