|
5仿真币
最近做流行病模型,需要在一个网格里面放多个Agent,我查了一下API,使用OrderedMultiGrid类来构造,里面提供了一些putObjectAt(int, int, index);之类的东西。似乎可以用。但是当我编程调试的时候发现在同一位置只能获取一个对象。这是很令人纳闷的事情。我想问一下Repast有提供什么好方法处理吗,不仅要能存进去,还要能方便的拿出来。
5 F9 Z% ]5 k+ p9 T- g$ ?( B4 @ private boolean findPotentialPartner(){4 q# O: u* L3 R7 j
boolean value = false;
, l2 o* S- @' n" W0 q5 e
% p. l7 {: P$ V OrderedMulti2DGrid grid = space.getCurrentAgentSpace();
: z' q5 W1 W2 e, }) Y Iterator iterator = grid.getIteratorAt(x, y);
: D5 u: j2 f; u* _ SexAgent ag1 = null; ! ]# [/ p: e& C8 m+ I
SexAgent [] potenAgent = new SexAgent[20];! T4 S$ L' ^# Y5 ~6 V( Q
int goodNumber = 0;
% y0 A1 _5 s7 A; B, p while(iterator.hasNext()){
# i5 X) k+ E9 `4 A System.out.println("XXXXXXXXXXXXXXXXXXXXX");
. T t( j" N0 l6 C/ [3 u ag1 = (SexAgent)iterator.next();) K! g$ m6 q- a9 \ N, Q+ S( s
if((ag1.sex == FEMALE)
" r0 W/ M; ]8 ?' F3 u; c9 T" U3 j &&(!ag1.isCoupled())){" l6 y2 i7 v- p9 ]/ A9 l, t- c" D
System.out.println("YYYYYYYYYYYYYYYYYYYY");
' P* [8 ]8 C6 H8 d; a potenAgent[goodNumber] = ag1;5 p8 B$ v$ O9 Y8 Z: X) a9 c+ [
goodNumber ++;
4 c4 J6 n! H. p6 p* n0 o } C0 v7 a9 Q/ ^7 L
}
& Z* A( a7 D- |% N0 {+ B
. j9 H) a" J& L7 Z/ ^. L6 H if(goodNumber >0){1 z$ J: l; e0 t, d: Q4 l
System.out.println("ZZZZZZZZZZZZZZZZZZZZZZZZZZZZ");
% A6 s5 V1 }+ P$ J0 u" E( F6 n Random rd1 = new Random();
+ g& l1 e' i( a1 i: Y int select = rd1.nextInt(goodNumber);! f7 F) l. Q! R# f$ O6 q- K W
potentialParterner = potenAgent[select];- r* r, l4 Z9 c& b7 b* ?0 r* o
value = true;
+ x8 m# e1 ?6 M. I* R }4 y; Z' p# C ]6 [/ q6 u8 o
return value;
5 X) G- u' B; N I j$ F }
8 h# i# q9 n9 D8 C始终只能打印出XXXXXXXXXXXXXXXXXXXX,请各位帮帮忙。 |
|