|
|
5仿真币
最近做流行病模型,需要在一个网格里面放多个Agent,我查了一下API,使用OrderedMultiGrid类来构造,里面提供了一些putObjectAt(int, int, index);之类的东西。似乎可以用。但是当我编程调试的时候发现在同一位置只能获取一个对象。这是很令人纳闷的事情。我想问一下Repast有提供什么好方法处理吗,不仅要能存进去,还要能方便的拿出来。: d; P. t+ U2 Y/ e* f
private boolean findPotentialPartner(){
2 t& `9 {: Z7 l* @% A boolean value = false;+ U5 D$ Q, w+ c6 f9 ?, J
, f: ?4 x5 \6 n5 h/ g
OrderedMulti2DGrid grid = space.getCurrentAgentSpace();
8 `! o' l9 |2 ?3 s) Q8 b& Q4 | Iterator iterator = grid.getIteratorAt(x, y);- s W( q; [( [# `1 b4 T3 p8 w+ i' Y
SexAgent ag1 = null; - ^5 U5 s9 Z* S6 m2 |0 `6 B% g
SexAgent [] potenAgent = new SexAgent[20];+ ^$ K" l8 {# z0 R! y# z) s- z3 K
int goodNumber = 0;; \+ h6 F+ n& k% }% ]
while(iterator.hasNext()){
( {2 o+ P) |' E5 ]8 B System.out.println("XXXXXXXXXXXXXXXXXXXXX");
2 s7 `: W/ H, V/ P- ~ ag1 = (SexAgent)iterator.next();4 ~# k" l! m P% N9 N9 W
if((ag1.sex == FEMALE) $ R) l. E) x) K+ ?" q$ B
&&(!ag1.isCoupled())){
a) ]: _4 |& F1 P4 E$ U System.out.println("YYYYYYYYYYYYYYYYYYYY");, H# J3 l9 i# q' V: g& Z+ e2 p
potenAgent[goodNumber] = ag1;
6 K: T8 ?) r8 C# i; K# [. c# X Q goodNumber ++;
0 C7 W# n6 [; l }
; ]& c6 t _- R. j f }: G. o% W ? I1 c+ m. M
t( ]9 a# u' Z6 V% ?8 y d if(goodNumber >0){
$ G* L( Q/ M- X( s1 Z/ H System.out.println("ZZZZZZZZZZZZZZZZZZZZZZZZZZZZ");
( |- w/ f$ s5 X9 O Random rd1 = new Random();
) W4 P: T& K( q* s8 C, y int select = rd1.nextInt(goodNumber);, i; j' R% D3 R2 s
potentialParterner = potenAgent[select];& Z& m" W4 Q% n* v
value = true;. I0 ]2 _# ~# R0 A# z: v4 m
}
4 {+ `! k5 c) t( V return value;
( O. q) Y) k6 ]' p7 Y }
1 n c- E- W' t3 M" [* V始终只能打印出XXXXXXXXXXXXXXXXXXXX,请各位帮帮忙。 |
|