|
|
5仿真币
最近做流行病模型,需要在一个网格里面放多个Agent,我查了一下API,使用OrderedMultiGrid类来构造,里面提供了一些putObjectAt(int, int, index);之类的东西。似乎可以用。但是当我编程调试的时候发现在同一位置只能获取一个对象。这是很令人纳闷的事情。我想问一下Repast有提供什么好方法处理吗,不仅要能存进去,还要能方便的拿出来。$ X6 e0 o2 @3 F _- O! t6 r# w- S5 z7 \
private boolean findPotentialPartner(){4 `! S. x) O( h# @/ n/ J- i
boolean value = false;; E/ y. g7 }! _8 [- X/ M
' e0 R: P0 W* w) M0 K$ H OrderedMulti2DGrid grid = space.getCurrentAgentSpace();/ Z% B* k8 C+ K" j3 f4 A
Iterator iterator = grid.getIteratorAt(x, y);7 {& V) J# B! `2 X1 Z3 k: d, b3 h, |3 G
SexAgent ag1 = null; ' g6 k0 E9 A/ V8 C; P6 u! q
SexAgent [] potenAgent = new SexAgent[20];; t$ q6 ^1 S4 a$ K) r- H/ P( }
int goodNumber = 0; N* u% w' C# x+ [% {+ m. I
while(iterator.hasNext()){
% \- l3 [" F, |: [2 ?# i. V7 u System.out.println("XXXXXXXXXXXXXXXXXXXXX");
) a6 n5 s1 e ^, T3 \# H$ G ag1 = (SexAgent)iterator.next();/ I: T0 C9 L6 b e
if((ag1.sex == FEMALE)
: Y; L5 L, |0 A4 v5 d &&(!ag1.isCoupled())){5 X( ?$ V) T7 J- `
System.out.println("YYYYYYYYYYYYYYYYYYYY");/ q* j3 E. [2 T* e$ }. u8 `6 @- m" |
potenAgent[goodNumber] = ag1;& J9 g3 ^1 @( K, s
goodNumber ++;' n8 F6 B: _, }
}
% B: X- |% ~! z) N, d: @' d& w }
* i" k m2 C7 I 7 T+ I0 q& Z, z" Z' D9 ~" {
if(goodNumber >0){$ L: M3 j% Y$ p5 k ]: P# V' J
System.out.println("ZZZZZZZZZZZZZZZZZZZZZZZZZZZZ"); 9 D3 t4 F* i1 R0 q! }
Random rd1 = new Random();0 N; h3 k+ n" g; T- T/ ]7 }8 o
int select = rd1.nextInt(goodNumber);
& j+ E$ G- |* {; k7 m potentialParterner = potenAgent[select];+ a: Q, E. N! X
value = true;" `: |3 \4 D$ y
}4 K1 G% j5 B. D- ?
return value;
1 g. L* D/ i( P$ X V7 z8 J0 S }+ ?9 N' `, U% Y7 j& M
始终只能打印出XXXXXXXXXXXXXXXXXXXX,请各位帮帮忙。 |
|