|
|
5仿真币
最近做流行病模型,需要在一个网格里面放多个Agent,我查了一下API,使用OrderedMultiGrid类来构造,里面提供了一些putObjectAt(int, int, index);之类的东西。似乎可以用。但是当我编程调试的时候发现在同一位置只能获取一个对象。这是很令人纳闷的事情。我想问一下Repast有提供什么好方法处理吗,不仅要能存进去,还要能方便的拿出来。" r1 K e6 k! P8 q; i
private boolean findPotentialPartner(){
' } g9 d" O9 k1 u boolean value = false;+ M5 g) O2 _! m: H3 }6 }# O- n4 g4 O7 Q [
+ ^. j+ l. i) @4 u OrderedMulti2DGrid grid = space.getCurrentAgentSpace();
. m3 d) x$ M: Q6 E5 z Iterator iterator = grid.getIteratorAt(x, y);
: @6 y! S9 O# ]: C; v SexAgent ag1 = null;
s9 {9 t; J5 t) X$ ]+ M( v% O, W- ] SexAgent [] potenAgent = new SexAgent[20];
, }! a& M3 w* }1 G, a1 P int goodNumber = 0;
% q/ `; _& K$ h* g9 V# M while(iterator.hasNext()){$ W% O& S: d0 p) Y; ~9 R. H; u
System.out.println("XXXXXXXXXXXXXXXXXXXXX");
+ t! S3 r" G# ?3 d( \$ z ag1 = (SexAgent)iterator.next();$ q0 l: [( [) e' Z7 x
if((ag1.sex == FEMALE)
1 f9 `& n. Y) j( t/ V1 W: R5 \ &&(!ag1.isCoupled())){
- ]0 Y$ I' Y3 L+ o( U# b System.out.println("YYYYYYYYYYYYYYYYYYYY");
' a6 [$ r$ k X4 w6 E" P8 X% Y3 ?9 P4 ] potenAgent[goodNumber] = ag1;
5 _9 V$ K! O8 {0 o4 y0 c goodNumber ++;5 p5 G& A2 `, N
}$ f6 e6 t' i: v$ b% l \
}2 V) l1 e& V8 J. i. Q! s" ^; J
) @7 d3 q6 }9 n if(goodNumber >0){+ y. x1 y7 ]+ V
System.out.println("ZZZZZZZZZZZZZZZZZZZZZZZZZZZZ");
$ R5 L/ u5 D+ b2 }3 @! S Random rd1 = new Random();
; D1 N9 w! Y9 f int select = rd1.nextInt(goodNumber);
7 U7 G8 I; Q: y; J! A potentialParterner = potenAgent[select];9 |1 h: C+ Q4 ~* p1 I
value = true;9 p( }: B- G" f2 G1 s2 X" U: F( |
}
0 ^. X$ y5 q7 O3 {% g return value;
/ q B& u8 C& A) a1 R$ b }; u$ |/ h+ c3 _; X5 @
始终只能打印出XXXXXXXXXXXXXXXXXXXX,请各位帮帮忙。 |
|