|
5仿真币
最近做流行病模型,需要在一个网格里面放多个Agent,我查了一下API,使用OrderedMultiGrid类来构造,里面提供了一些putObjectAt(int, int, index);之类的东西。似乎可以用。但是当我编程调试的时候发现在同一位置只能获取一个对象。这是很令人纳闷的事情。我想问一下Repast有提供什么好方法处理吗,不仅要能存进去,还要能方便的拿出来。# |9 J) t# E4 G$ d( V1 ]
private boolean findPotentialPartner(){+ Z$ \0 f& S1 p6 @# N
boolean value = false;! j# M% l0 q: c# q/ |8 V3 A
' }- a" @ K7 N& J" F OrderedMulti2DGrid grid = space.getCurrentAgentSpace();
/ R5 m3 A& h$ d& r' A/ S Iterator iterator = grid.getIteratorAt(x, y);1 P2 W0 x& \ ^6 j) k% t- D/ y
SexAgent ag1 = null;
& _% k! G: W) Z: s! C* M SexAgent [] potenAgent = new SexAgent[20];
8 A7 G2 p2 e8 K9 I9 H int goodNumber = 0;1 V4 z3 _% a4 }8 ?
while(iterator.hasNext()){3 d; S# }8 P4 A3 A4 ]0 Y
System.out.println("XXXXXXXXXXXXXXXXXXXXX");
( b' h* f1 D2 c( `& l' u ag1 = (SexAgent)iterator.next();/ T# n8 g; X8 q9 h ~
if((ag1.sex == FEMALE)
. y6 }: o3 j0 x& N/ Y &&(!ag1.isCoupled())){
/ _) l0 I+ P) n- ] System.out.println("YYYYYYYYYYYYYYYYYYYY");: P& x( F* L/ k6 y* E+ s6 j
potenAgent[goodNumber] = ag1;6 t8 T! e9 Q% B. Q3 E5 H
goodNumber ++;% u' K1 O" l- ?7 c) o# e6 l
}
8 g; {+ }% L& E" G7 a }# V* u1 M& x, S. i+ J6 f: v
. a' p$ @# [ F& L$ Q if(goodNumber >0){9 F/ c6 u& k! F2 F! G* {
System.out.println("ZZZZZZZZZZZZZZZZZZZZZZZZZZZZ");
7 p- [1 ?! ]5 w5 T% _- x* s Random rd1 = new Random();; S- }+ ]1 f) U8 y8 t! F
int select = rd1.nextInt(goodNumber);* G i' d* l& p# j
potentialParterner = potenAgent[select];
' l0 {9 @; @. I value = true;
1 t$ d) Y4 W- c: e6 h# D& K! s }; O7 R, Z8 R. E) Q* q! M: {
return value;' ^& p( q$ Y8 ^0 ~6 A0 |0 @% J
}3 a5 g, l: n; w% J( e0 Z' J
始终只能打印出XXXXXXXXXXXXXXXXXXXX,请各位帮帮忙。 |
|