|
|
5仿真币
最近做流行病模型,需要在一个网格里面放多个Agent,我查了一下API,使用OrderedMultiGrid类来构造,里面提供了一些putObjectAt(int, int, index);之类的东西。似乎可以用。但是当我编程调试的时候发现在同一位置只能获取一个对象。这是很令人纳闷的事情。我想问一下Repast有提供什么好方法处理吗,不仅要能存进去,还要能方便的拿出来。8 t, H6 s: L6 U( l: f0 Y( m
private boolean findPotentialPartner(){; T$ z; P6 n3 d% |) k! T9 J; i
boolean value = false;5 d2 N! k( ^& K
3 @5 q" \$ |. K4 W
OrderedMulti2DGrid grid = space.getCurrentAgentSpace();
# y" V, F8 F6 ?& h* [) w& f Iterator iterator = grid.getIteratorAt(x, y);3 z; Q/ b2 w; u' U5 v# v( t; M
SexAgent ag1 = null;
; [) a( ~& H0 y; a SexAgent [] potenAgent = new SexAgent[20];4 h' r& i& H7 [0 A! J0 U I3 A& n: S
int goodNumber = 0;
! X5 A! ^( P3 v5 Z' a( x+ ?( r) s while(iterator.hasNext()){
8 p8 _8 r, }/ B) g System.out.println("XXXXXXXXXXXXXXXXXXXXX");
4 j) ^+ d9 m( ]0 [: y# t+ o- S ag1 = (SexAgent)iterator.next();
) R$ M1 J4 l- G# e! g( { if((ag1.sex == FEMALE)
3 Y0 ?$ [( [( K &&(!ag1.isCoupled())){
+ i+ @! Y' i$ i4 |7 v& h, w2 S System.out.println("YYYYYYYYYYYYYYYYYYYY");
1 ]$ n2 ~4 u7 U2 ?1 B potenAgent[goodNumber] = ag1;+ _7 P$ V% {) {7 C7 I" m! D
goodNumber ++;" a$ h: q9 i( c. e5 T
}
2 ~' Q8 `0 A; Z }
1 |8 q, M! v' u* G& P+ ?( f
+ G' p+ u8 c& J7 j if(goodNumber >0){& D" Y/ k: j- ^8 Q9 @, W6 Q3 M6 V
System.out.println("ZZZZZZZZZZZZZZZZZZZZZZZZZZZZ");
. n$ p) q0 d1 i7 r Random rd1 = new Random();2 p) Z6 o' d4 \ Q- ?
int select = rd1.nextInt(goodNumber);
1 Y8 g4 L; {5 ]" V" o m% z potentialParterner = potenAgent[select];. z8 R3 O1 m1 s, ^5 Z1 S
value = true;& F. \7 X6 k. L- [' ^
}
1 g+ n# M; z5 L return value;4 S1 @2 a5 @+ q9 o
}6 q4 `. Y3 i8 N0 V0 B0 `
始终只能打印出XXXXXXXXXXXXXXXXXXXX,请各位帮帮忙。 |
|