|
|
5仿真币
最近做流行病模型,需要在一个网格里面放多个Agent,我查了一下API,使用OrderedMultiGrid类来构造,里面提供了一些putObjectAt(int, int, index);之类的东西。似乎可以用。但是当我编程调试的时候发现在同一位置只能获取一个对象。这是很令人纳闷的事情。我想问一下Repast有提供什么好方法处理吗,不仅要能存进去,还要能方便的拿出来。5 }! i. ?# V+ R* ]2 Z) d
private boolean findPotentialPartner(){7 l% W/ A( d e: Y: k% J
boolean value = false;
3 p% z5 c' {/ N! `8 C
$ [; t3 ~* E# s6 P OrderedMulti2DGrid grid = space.getCurrentAgentSpace();. H( B0 S5 l! }* D) j
Iterator iterator = grid.getIteratorAt(x, y);9 L7 K* k) e! R- S9 [
SexAgent ag1 = null; ! M) {0 [. a; `! Y( C
SexAgent [] potenAgent = new SexAgent[20];
; S& { A- @' j: w' d int goodNumber = 0;
5 A* |( ~; T% [) i while(iterator.hasNext()){$ z% y, u# B) K% c
System.out.println("XXXXXXXXXXXXXXXXXXXXX");. q- b. N- n. \- n+ r
ag1 = (SexAgent)iterator.next();4 G$ w/ X/ i* r \) s. \
if((ag1.sex == FEMALE) ( |) @* I$ y) @7 ?
&&(!ag1.isCoupled())){
( i* |" k3 X- e1 } System.out.println("YYYYYYYYYYYYYYYYYYYY");' ^( r' R$ g0 S0 w4 v
potenAgent[goodNumber] = ag1;
; [; `: D! U2 S, o( { goodNumber ++;7 ?6 v( }) _$ B# j4 F1 l
}% B5 i( {4 A, G- x
} C7 q( a% f0 g; e0 w9 \0 m
# l: L# i- H* W) J. A" Y if(goodNumber >0){, s" {* C" P o4 y
System.out.println("ZZZZZZZZZZZZZZZZZZZZZZZZZZZZ"); & }9 P8 m5 U s3 Y" x) b
Random rd1 = new Random();
; t- H0 U) i; Y1 w$ n int select = rd1.nextInt(goodNumber);1 L! W5 a8 a4 Z' D4 [) O4 V- i
potentialParterner = potenAgent[select];
9 _: X- Y4 e. G; _4 r value = true;( M; _2 p; l2 T& i6 W- A) ?- ]
}5 u3 f/ k1 ^* ?. g$ S' G
return value;
" [4 d/ q3 \& W% y1 [ }
$ n5 ~$ j5 D& e始终只能打印出XXXXXXXXXXXXXXXXXXXX,请各位帮帮忙。 |
|