|
|
5仿真币
最近做流行病模型,需要在一个网格里面放多个Agent,我查了一下API,使用OrderedMultiGrid类来构造,里面提供了一些putObjectAt(int, int, index);之类的东西。似乎可以用。但是当我编程调试的时候发现在同一位置只能获取一个对象。这是很令人纳闷的事情。我想问一下Repast有提供什么好方法处理吗,不仅要能存进去,还要能方便的拿出来。) a; ^6 Q8 g4 G( v- J& A- t
private boolean findPotentialPartner(){) f7 s1 f. N) `/ N4 u- n
boolean value = false;3 Q- N3 D$ _% Q; @1 Z
; C3 i3 c! a7 t8 Y$ r+ C5 Q
OrderedMulti2DGrid grid = space.getCurrentAgentSpace();
0 M V8 T5 v, _& z5 o Iterator iterator = grid.getIteratorAt(x, y);
. d- N2 X' W1 b) G* Z* G SexAgent ag1 = null;
, Q# K" W# E0 L. N o1 ^1 c SexAgent [] potenAgent = new SexAgent[20];
: O! ?4 u/ f2 `2 d6 R int goodNumber = 0;
& {: m3 y* D- t+ k# b while(iterator.hasNext()){
' ~* \* V8 u" C. d. _7 |6 r System.out.println("XXXXXXXXXXXXXXXXXXXXX");' k8 E O1 d. `) r6 g
ag1 = (SexAgent)iterator.next();
, n+ `# ]7 V" P% M- @( V if((ag1.sex == FEMALE)
. x, c9 \# u+ Z- ?2 g4 ] &&(!ag1.isCoupled())){6 c+ C. C8 _& t* Q4 ^, C1 Y
System.out.println("YYYYYYYYYYYYYYYYYYYY");& _% E6 p) ?; t2 T1 |7 x( l. g0 T
potenAgent[goodNumber] = ag1;# G/ g. c i7 |9 l3 `7 `
goodNumber ++;
) o* X( R- t8 f3 m# n" d- e }- }$ S( ~! l1 f% d' R
}
7 L8 J2 k) @. t/ ]- u& L# F& } $ j5 N7 u( I/ F! P5 ]( ]; y% h& c
if(goodNumber >0){3 q1 e9 D# ?! n0 n# J& o5 E3 W( N Q
System.out.println("ZZZZZZZZZZZZZZZZZZZZZZZZZZZZ");
" k0 D. `+ b# M' y Random rd1 = new Random();
0 i3 _& {8 f8 H6 S- N6 v int select = rd1.nextInt(goodNumber);
# p+ J* \7 s6 Z7 S% @) Q potentialParterner = potenAgent[select];9 J6 l) w0 S! h" R. N+ i' Q
value = true;
4 R4 ~8 P+ m. O! q3 w }& R- P. d3 S+ z. Y1 W" t2 s: S
return value;$ s/ Z4 a* \$ @7 W' M
}* \0 U+ m. X( k3 F/ `# H7 w
始终只能打印出XXXXXXXXXXXXXXXXXXXX,请各位帮帮忙。 |
|