|
|
5仿真币
最近做流行病模型,需要在一个网格里面放多个Agent,我查了一下API,使用OrderedMultiGrid类来构造,里面提供了一些putObjectAt(int, int, index);之类的东西。似乎可以用。但是当我编程调试的时候发现在同一位置只能获取一个对象。这是很令人纳闷的事情。我想问一下Repast有提供什么好方法处理吗,不仅要能存进去,还要能方便的拿出来。! `- c& T# Q* s* X( f; N
private boolean findPotentialPartner(){+ g% r3 A0 t* ~
boolean value = false;
$ D& C: m) i0 t8 [# H0 R# @
9 v S4 g0 C( j, G" T H OrderedMulti2DGrid grid = space.getCurrentAgentSpace();
* s. V% G2 M1 O3 c! |1 z; D Iterator iterator = grid.getIteratorAt(x, y);
7 b: Y* E0 B4 e, U0 U" {3 \$ R SexAgent ag1 = null;
0 P9 V* B; w! |' Q SexAgent [] potenAgent = new SexAgent[20];6 P8 j4 p3 P5 i$ M
int goodNumber = 0;
0 Z* X c* ^" }$ G8 y# y5 o while(iterator.hasNext()){* W7 v$ i7 e; X7 X
System.out.println("XXXXXXXXXXXXXXXXXXXXX");6 y, n7 L" p: T8 n6 `6 m6 {8 e' _
ag1 = (SexAgent)iterator.next();
8 V) g6 d9 D, H, v8 g2 M if((ag1.sex == FEMALE) 5 m- w, N% }; G' E4 X
&&(!ag1.isCoupled())){
( Q) q- R+ X) G+ [0 q8 ^ System.out.println("YYYYYYYYYYYYYYYYYYYY");
# t% s8 ]/ S1 H. S: H, m) X- M7 A7 D. y potenAgent[goodNumber] = ag1;
. | T) Y) `+ y' P+ }1 ^8 O' t) Y2 K( |4 i goodNumber ++;
0 R' i1 x2 n, X1 Z. Q$ p }( M0 @2 L' k: b6 O
}6 n1 _& h! k8 K$ ?+ b
3 \0 V8 _, j0 }0 d! _
if(goodNumber >0){
, ]! ]. I% j# ]2 r0 R System.out.println("ZZZZZZZZZZZZZZZZZZZZZZZZZZZZ"); 9 S! E7 |- f9 @- Z& K
Random rd1 = new Random();4 M* n- O& a! d' {8 t" s
int select = rd1.nextInt(goodNumber);/ j( c1 [* w0 |& v8 C4 ^2 N( T" o
potentialParterner = potenAgent[select];, V k4 n' u V4 Z W9 c
value = true;
$ Q1 l. V, m% P! {9 t }6 f5 y+ p$ @, ~ f2 ?. Q! h
return value;
0 x/ r2 f/ h: i4 t9 O }/ N% ^' U0 L4 a% @
始终只能打印出XXXXXXXXXXXXXXXXXXXX,请各位帮帮忙。 |
|