|
|
5仿真币
最近做流行病模型,需要在一个网格里面放多个Agent,我查了一下API,使用OrderedMultiGrid类来构造,里面提供了一些putObjectAt(int, int, index);之类的东西。似乎可以用。但是当我编程调试的时候发现在同一位置只能获取一个对象。这是很令人纳闷的事情。我想问一下Repast有提供什么好方法处理吗,不仅要能存进去,还要能方便的拿出来。
$ Y3 s8 l. ?" [4 H1 }/ s& |5 H private boolean findPotentialPartner(){% d# ]0 W+ _; F
boolean value = false;, o8 c4 B- {5 ?3 ~6 u
! e. K1 T6 x2 e3 K* D: S5 X OrderedMulti2DGrid grid = space.getCurrentAgentSpace();
3 K, y" ^' ?0 G Iterator iterator = grid.getIteratorAt(x, y);, M- w8 O5 G+ x! `
SexAgent ag1 = null;
8 ~, s T6 v: C: B0 P: q# b$ Y7 x SexAgent [] potenAgent = new SexAgent[20];
. Z$ p# j, k$ ?0 ?# {. i3 ~6 ] int goodNumber = 0;' a- p% {: T& [, n; p2 |- Z
while(iterator.hasNext()){2 [* s6 @' F3 I2 H+ N# Y- M' b
System.out.println("XXXXXXXXXXXXXXXXXXXXX");
; d) F- R' P) x9 Z) N8 K6 {) T ag1 = (SexAgent)iterator.next();( o p1 V- Q% w3 o
if((ag1.sex == FEMALE) 3 x- A/ w" n( D3 I7 F8 ^% H3 @
&&(!ag1.isCoupled())){
5 R9 x6 {5 M+ \1 r0 j7 [ System.out.println("YYYYYYYYYYYYYYYYYYYY");
+ O3 }5 y! i9 F% {; B6 F! u' [( x potenAgent[goodNumber] = ag1;; u n; \' @2 W! \" {
goodNumber ++;$ U, S k4 Q9 J3 U
}3 W' a3 U1 m0 V) F
}+ p! o' E$ {+ A. _+ z* b& S5 l
( j( b T% M8 d( }+ r if(goodNumber >0){
4 P) i% Z- r% |. t S: ?9 v7 W4 L System.out.println("ZZZZZZZZZZZZZZZZZZZZZZZZZZZZ");
' M( I7 K" V' O$ a Random rd1 = new Random();
1 |/ x! ^" q$ V8 @ M% E- _' I int select = rd1.nextInt(goodNumber);$ [1 b2 R) W) a2 Y- T
potentialParterner = potenAgent[select];7 Y0 \1 _0 E. Q, B/ j" O
value = true;
% d; j! B6 b$ h6 f/ r/ I$ l( k }3 T- \/ v. u! ?* J3 x7 g5 c, i8 _4 D
return value;" c8 v+ K7 U, d5 F& P1 B
}
: a8 c7 d* w, `, b& Y始终只能打印出XXXXXXXXXXXXXXXXXXXX,请各位帮帮忙。 |
|