|
|
5仿真币
最近做流行病模型,需要在一个网格里面放多个Agent,我查了一下API,使用OrderedMultiGrid类来构造,里面提供了一些putObjectAt(int, int, index);之类的东西。似乎可以用。但是当我编程调试的时候发现在同一位置只能获取一个对象。这是很令人纳闷的事情。我想问一下Repast有提供什么好方法处理吗,不仅要能存进去,还要能方便的拿出来。0 n' T. z$ x; O7 \' I1 P; e
private boolean findPotentialPartner(){) V2 R5 P9 n7 J$ D
boolean value = false;$ {2 d4 a0 e6 s5 m7 q# z0 f4 l
& r. w5 D6 J+ S \: K1 T6 B
OrderedMulti2DGrid grid = space.getCurrentAgentSpace(); G9 P; O% Z& ^# x6 [
Iterator iterator = grid.getIteratorAt(x, y);. |; w7 g% U. f2 J0 B- O
SexAgent ag1 = null; ! Z4 Z z; [/ k# q q
SexAgent [] potenAgent = new SexAgent[20];
( C( v7 Q& h1 l# u9 ~- |% z) K int goodNumber = 0;
, c' s( Z. [' u) l; M5 N while(iterator.hasNext()){6 ~/ [5 h0 W- c8 I' Q
System.out.println("XXXXXXXXXXXXXXXXXXXXX");
( y( X5 s6 G" n$ {9 t6 _ ag1 = (SexAgent)iterator.next();
# x( X) }1 R) w6 L if((ag1.sex == FEMALE) & L" u- ^: x% k: G5 F+ e6 t9 F
&&(!ag1.isCoupled())){
$ T5 o( {. F! u5 s, H+ M System.out.println("YYYYYYYYYYYYYYYYYYYY");5 p" R% U( m, N, W9 F
potenAgent[goodNumber] = ag1;
- T& d+ Q, u" S8 T Y% \ goodNumber ++;3 V/ n1 o c. A0 ]1 D
}
/ R' P+ t5 k+ I5 f3 J1 X }# x5 v7 y" k* z5 n* r8 c1 B+ X
4 `# B) D& @! k* _: I% {
if(goodNumber >0){
& Z; H+ L' G# V8 C9 s% W System.out.println("ZZZZZZZZZZZZZZZZZZZZZZZZZZZZ"); 0 S2 Z; V& a7 O2 y$ D, I8 V7 ~0 @
Random rd1 = new Random();4 p" `, n6 Y7 C5 i
int select = rd1.nextInt(goodNumber);6 A: {" X) d2 B% j/ j. `2 V
potentialParterner = potenAgent[select];) T7 b9 j% m. P& m$ ?! i
value = true;6 |5 U- B+ ?, H3 \' e& U
}
$ {- ^& L" |2 V# U0 R return value;) {: K& b# L* C) y* I: d* z
}# D+ T8 D' j8 M) @1 y
始终只能打印出XXXXXXXXXXXXXXXXXXXX,请各位帮帮忙。 |
|