|
|
5仿真币
最近做流行病模型,需要在一个网格里面放多个Agent,我查了一下API,使用OrderedMultiGrid类来构造,里面提供了一些putObjectAt(int, int, index);之类的东西。似乎可以用。但是当我编程调试的时候发现在同一位置只能获取一个对象。这是很令人纳闷的事情。我想问一下Repast有提供什么好方法处理吗,不仅要能存进去,还要能方便的拿出来。
; {% g0 M9 [' o$ ~: z private boolean findPotentialPartner(){+ U C* D2 E: ~+ M5 f5 a
boolean value = false;) b% ]' t$ u5 i
9 L: }, i- D7 i" z/ _ OrderedMulti2DGrid grid = space.getCurrentAgentSpace(); K) z7 R) _4 t; {: p
Iterator iterator = grid.getIteratorAt(x, y);0 [+ c* m$ `8 A; ]
SexAgent ag1 = null;
& K; r0 _! N. B- C# u; C- K9 y SexAgent [] potenAgent = new SexAgent[20];6 N0 l. L( ]8 r
int goodNumber = 0;; z. S B2 U# P! X- i
while(iterator.hasNext()){4 T9 O1 q3 W1 c% x; f
System.out.println("XXXXXXXXXXXXXXXXXXXXX");* i( Q4 [* F5 ^7 v
ag1 = (SexAgent)iterator.next();% [# O. e9 g& C! u% a
if((ag1.sex == FEMALE) ) H: n+ F: |; B7 l( O6 Y- F
&&(!ag1.isCoupled())){6 [1 W" i4 [# M& o8 S
System.out.println("YYYYYYYYYYYYYYYYYYYY");/ C9 {' O1 d) r0 w3 ]
potenAgent[goodNumber] = ag1;
0 ~9 ]4 D1 w h. T8 T goodNumber ++;' C$ q8 k W4 N5 Q ?. V5 G; @
} r9 J7 J! a1 ` j4 `$ r n
}# x7 K2 w8 ]0 t! f' r" J
; o# v7 _* c, [ if(goodNumber >0){
# }& X: Y/ o" f0 M1 L& y" Z System.out.println("ZZZZZZZZZZZZZZZZZZZZZZZZZZZZ"); $ c/ m2 f) k7 X* T
Random rd1 = new Random();
- G, Z2 }7 t, @! M/ \- x int select = rd1.nextInt(goodNumber);
8 a: ^, z* y q; a+ ^8 j ` potentialParterner = potenAgent[select];) n9 L& N, n4 _7 o& J0 W
value = true;
/ g4 C1 A. c3 M" v, t6 M }
$ B4 _3 I7 F9 ]/ {3 G return value;# ?8 ?6 C' T" U0 f" i1 C
}
) w% i, s' P: R/ [% x9 n始终只能打印出XXXXXXXXXXXXXXXXXXXX,请各位帮帮忙。 |
|