|
|
5仿真币
最近做流行病模型,需要在一个网格里面放多个Agent,我查了一下API,使用OrderedMultiGrid类来构造,里面提供了一些putObjectAt(int, int, index);之类的东西。似乎可以用。但是当我编程调试的时候发现在同一位置只能获取一个对象。这是很令人纳闷的事情。我想问一下Repast有提供什么好方法处理吗,不仅要能存进去,还要能方便的拿出来。
/ A, c4 l5 a; M! T0 } private boolean findPotentialPartner(){
# N7 ]2 k8 s2 G4 R7 M boolean value = false;3 W6 s/ H. s" G) K- c
T, @! A5 G8 H2 i+ k6 b OrderedMulti2DGrid grid = space.getCurrentAgentSpace();
# ~5 h- t0 S3 d" @2 l5 A3 X Iterator iterator = grid.getIteratorAt(x, y);9 c/ W; k; r f9 j- k# L
SexAgent ag1 = null; ( T: l8 S/ d# Y0 K; R7 ?8 x
SexAgent [] potenAgent = new SexAgent[20];
1 ]# G+ Z9 ], o* r) z8 S; C int goodNumber = 0;
! w3 V! F* Q( n g6 b6 x% A- M3 H while(iterator.hasNext()){" G# f8 Y8 J8 C2 d/ R
System.out.println("XXXXXXXXXXXXXXXXXXXXX");4 l. ~+ m* q- _" C: N, t5 W
ag1 = (SexAgent)iterator.next();
2 x4 |* e* @$ C& S0 D if((ag1.sex == FEMALE) 9 y @; D& f2 z4 S9 ?8 R
&&(!ag1.isCoupled())){
- e3 {6 o, o! R! p8 j$ a. \. M) z System.out.println("YYYYYYYYYYYYYYYYYYYY");
" S5 j: S: D$ }: J2 w2 u potenAgent[goodNumber] = ag1;( D @* W5 s. W
goodNumber ++;6 Y7 h8 e& y; C/ @7 q/ T
}& @0 D o% b: I( J8 t6 v
}$ U3 _6 l% |* r0 t+ q
& ~ U5 I& ~+ j; V+ x$ T% K
if(goodNumber >0){
7 g; N9 F9 J; @/ _ System.out.println("ZZZZZZZZZZZZZZZZZZZZZZZZZZZZ"); 8 D' K; r0 F3 A8 T% o; D! ] S
Random rd1 = new Random();; [+ H! I) G+ b' `) K+ C
int select = rd1.nextInt(goodNumber);
7 r1 O0 Y" V2 j potentialParterner = potenAgent[select];3 A* |7 I8 X0 B3 p* d6 V: B
value = true;9 {5 Q% z% _* v* o, Y
}
# q$ ?; b& C! r2 ~ return value;
- \% H' z% V5 t) f }& i9 b+ k# b1 E3 W* u' l- `4 S
始终只能打印出XXXXXXXXXXXXXXXXXXXX,请各位帮帮忙。 |
|