|
|
5仿真币
最近做流行病模型,需要在一个网格里面放多个Agent,我查了一下API,使用OrderedMultiGrid类来构造,里面提供了一些putObjectAt(int, int, index);之类的东西。似乎可以用。但是当我编程调试的时候发现在同一位置只能获取一个对象。这是很令人纳闷的事情。我想问一下Repast有提供什么好方法处理吗,不仅要能存进去,还要能方便的拿出来。2 G$ D4 Q; C+ e) r& w" q
private boolean findPotentialPartner(){
+ N/ {% h; I& \! ?' m0 ~ boolean value = false;3 I7 Z L4 A8 E- V' H% D7 V
9 C; r0 z: z/ J5 S OrderedMulti2DGrid grid = space.getCurrentAgentSpace();, X+ T8 g" b# Z7 p) B
Iterator iterator = grid.getIteratorAt(x, y);
# ]& n+ h" ^7 L SexAgent ag1 = null; 3 y( k( |& j; d# C8 }: Z& \2 c
SexAgent [] potenAgent = new SexAgent[20];9 B; B1 F. [2 q7 o* _! r
int goodNumber = 0;
* @" P7 T8 b0 g$ j# J while(iterator.hasNext()){
- \8 z$ r) \" ?5 K- Q3 Z- @ System.out.println("XXXXXXXXXXXXXXXXXXXXX");
/ U$ ~% W. p8 o& B7 _ ag1 = (SexAgent)iterator.next(); T& E. A- c' u" C3 ~* M2 @/ n
if((ag1.sex == FEMALE)
" K$ p; t+ F6 v5 s. a &&(!ag1.isCoupled())){
* e0 N/ Q; P7 [1 ^% ]# _; d* d System.out.println("YYYYYYYYYYYYYYYYYYYY");
4 x8 G1 g2 L( Z' R potenAgent[goodNumber] = ag1;
5 m$ ?% C- b* ? goodNumber ++;* W" a/ k% S4 G; o5 U" I& t3 |( k$ L
}! f7 G0 \7 R2 F4 H7 x9 q& s9 @
}/ b1 |' b0 J- W. W1 @ ~
1 A1 H+ i' P) i, V6 o+ L
if(goodNumber >0){3 x3 T7 D+ [' ]$ s
System.out.println("ZZZZZZZZZZZZZZZZZZZZZZZZZZZZ");
* ~: M- s F6 @* J6 n: x2 w& z Random rd1 = new Random();
7 K- Z& W+ O" ^' ]8 ?; q5 h int select = rd1.nextInt(goodNumber);# A( [3 p! R- C1 d0 m
potentialParterner = potenAgent[select]; G i% b2 a: u2 P) G
value = true;3 Z8 z% d3 \- b: F
}
. x3 T& L$ H4 v3 J return value;. Z4 M. E' ^4 _6 E, N& @3 J/ H
}
/ ^/ z+ u) t: H& J; z9 j3 y始终只能打印出XXXXXXXXXXXXXXXXXXXX,请各位帮帮忙。 |
|