|
|
5仿真币
最近做流行病模型,需要在一个网格里面放多个Agent,我查了一下API,使用OrderedMultiGrid类来构造,里面提供了一些putObjectAt(int, int, index);之类的东西。似乎可以用。但是当我编程调试的时候发现在同一位置只能获取一个对象。这是很令人纳闷的事情。我想问一下Repast有提供什么好方法处理吗,不仅要能存进去,还要能方便的拿出来。% o! A) J7 S1 N H( k; ]
private boolean findPotentialPartner(){
2 S1 b, o6 R0 R4 }/ v boolean value = false;
( ?$ W( T& ]6 i" w. } ~% n
- k2 H: d+ C% g& b* x OrderedMulti2DGrid grid = space.getCurrentAgentSpace();
: B T! ?( ~8 {* Y Iterator iterator = grid.getIteratorAt(x, y);% z" ]7 T0 D9 D1 m
SexAgent ag1 = null; 2 n. z7 s4 Q- J" m, u
SexAgent [] potenAgent = new SexAgent[20];
% ^# J( ]. G. x- E, J1 |9 h int goodNumber = 0;) |; _! x6 m( }) Q' i2 h0 k
while(iterator.hasNext()){
, f$ j+ U+ z: L/ P( o System.out.println("XXXXXXXXXXXXXXXXXXXXX");
2 [/ g/ V3 }1 f8 B ag1 = (SexAgent)iterator.next();4 W+ t! i' U7 k/ n2 v0 E
if((ag1.sex == FEMALE)
2 o1 n, F, i8 N+ ` &&(!ag1.isCoupled())){3 C$ x( Q' V& A5 I5 P" u
System.out.println("YYYYYYYYYYYYYYYYYYYY");
: t3 n6 |+ R0 e) ^ potenAgent[goodNumber] = ag1;8 b9 C( [1 T5 s5 b/ m0 O* j: E
goodNumber ++;9 |) h1 q" s2 U7 Q: Q1 l2 T5 ~' B
}+ s6 O6 A) G" }4 A
}4 q- C' a6 s* t8 n! ` H4 |9 k7 c4 E
5 Q4 `) V2 S5 m8 I if(goodNumber >0){ ^1 t. v! J- C% _) b2 }' q5 m
System.out.println("ZZZZZZZZZZZZZZZZZZZZZZZZZZZZ"); 5 {8 t7 r# q/ i& x' ^* v. s4 |( s
Random rd1 = new Random();; _1 B& p* e# L/ T6 T; E
int select = rd1.nextInt(goodNumber);- p1 A2 p- c8 O0 u) n
potentialParterner = potenAgent[select];
$ ?# L! d) C [$ p5 h. f value = true;
* u: d# z% B( J }! C& F5 N5 b6 S5 b! }5 s! S
return value;
. t, B: q& j. a ?) s }7 u& K/ ~/ H k4 |9 W# m8 R: X* p
始终只能打印出XXXXXXXXXXXXXXXXXXXX,请各位帮帮忙。 |
|