|
|
5仿真币
最近做流行病模型,需要在一个网格里面放多个Agent,我查了一下API,使用OrderedMultiGrid类来构造,里面提供了一些putObjectAt(int, int, index);之类的东西。似乎可以用。但是当我编程调试的时候发现在同一位置只能获取一个对象。这是很令人纳闷的事情。我想问一下Repast有提供什么好方法处理吗,不仅要能存进去,还要能方便的拿出来。
- f# x: t3 D2 O. K1 J: Q private boolean findPotentialPartner(){( u6 U/ I Q" \5 f
boolean value = false;
- Q- Q8 O$ F7 `" W: t" g : S$ e7 l, p$ b0 h0 A B4 W
OrderedMulti2DGrid grid = space.getCurrentAgentSpace();5 d: u' y; i; V5 y4 N; j/ M3 c
Iterator iterator = grid.getIteratorAt(x, y);6 V7 }8 X5 { n' r: f6 I
SexAgent ag1 = null; m. H ^- e" z( v; I* m
SexAgent [] potenAgent = new SexAgent[20];8 {/ H9 P! g1 b
int goodNumber = 0;
$ f" G2 J: y( C2 N$ n) A while(iterator.hasNext()){
Y) Z. |) a( ` System.out.println("XXXXXXXXXXXXXXXXXXXXX");% J/ n4 j1 |$ a: X
ag1 = (SexAgent)iterator.next();" I, x- m$ `/ a4 q7 v0 a$ t
if((ag1.sex == FEMALE) 4 ^3 u) k; O9 o1 x- S5 g6 [, e
&&(!ag1.isCoupled())){0 p2 e& W- `5 r% \
System.out.println("YYYYYYYYYYYYYYYYYYYY");/ Z5 R" ]4 {- m
potenAgent[goodNumber] = ag1;* i1 {% t0 k1 j) R4 u
goodNumber ++;+ |! A! l; G- d8 M) g
}
1 a+ g& m" ]& {( Q) G2 o! q }
0 d+ C: r; f* U) ^( z4 T8 t
4 Z: u& Y0 h7 b( G5 X& { if(goodNumber >0){
$ U0 s0 R+ H C$ \$ \- ~ System.out.println("ZZZZZZZZZZZZZZZZZZZZZZZZZZZZ"); 4 N4 w3 K- F+ ?0 X! I8 c
Random rd1 = new Random();# J0 o8 @, t7 q
int select = rd1.nextInt(goodNumber);' b6 t* z9 _( V/ P0 B
potentialParterner = potenAgent[select];
1 b: L4 x' I# N9 C value = true;
: K( }$ C0 K* U$ V }
$ ?' M" U2 m/ i2 G% G1 `' | return value;
' @! R+ X" M" V3 R7 M* o9 h" @ }
0 i: W0 M# K4 n' z+ d0 K9 r始终只能打印出XXXXXXXXXXXXXXXXXXXX,请各位帮帮忙。 |
|