|
5仿真币
最近做流行病模型,需要在一个网格里面放多个Agent,我查了一下API,使用OrderedMultiGrid类来构造,里面提供了一些putObjectAt(int, int, index);之类的东西。似乎可以用。但是当我编程调试的时候发现在同一位置只能获取一个对象。这是很令人纳闷的事情。我想问一下Repast有提供什么好方法处理吗,不仅要能存进去,还要能方便的拿出来。* A6 [/ w. ^2 Z0 X8 s
private boolean findPotentialPartner(){2 @2 j# q+ u3 A. @1 U
boolean value = false;
1 H* p7 a! y `
@4 u2 B- d8 _- c OrderedMulti2DGrid grid = space.getCurrentAgentSpace();2 {/ B! E& a4 P
Iterator iterator = grid.getIteratorAt(x, y);# q, t* I1 d$ A8 Y
SexAgent ag1 = null;
/ @& M, B7 {% e- N9 P SexAgent [] potenAgent = new SexAgent[20];
# H3 I% Y' n& X' n8 t! Y int goodNumber = 0;; r C1 `# f( V" x8 F
while(iterator.hasNext()){8 B4 `1 l9 b! P! p5 \6 ?9 ~& ^
System.out.println("XXXXXXXXXXXXXXXXXXXXX");
5 G0 }( Y9 x! c3 A: x; Y4 Z2 E1 W ag1 = (SexAgent)iterator.next();% f) H8 Q1 Q0 m4 i; _
if((ag1.sex == FEMALE) w$ C& d( x. E" d: i; i, f; t
&&(!ag1.isCoupled())){
/ X Y1 [7 t& v- \8 A) A3 i' s) ~ System.out.println("YYYYYYYYYYYYYYYYYYYY");
( o- d9 Y+ r9 O potenAgent[goodNumber] = ag1;8 u. u/ B% M2 C- b! K
goodNumber ++;
6 I+ X j. n6 X! N- o }; w0 K7 m+ I; g3 {
}0 _' N1 f, n# x2 d) D$ x
9 T! ?( z% K/ O5 L) g1 Z; d1 Q if(goodNumber >0){
5 d5 s5 E+ ~9 h! B" p0 q' ~& n( X* } System.out.println("ZZZZZZZZZZZZZZZZZZZZZZZZZZZZ");
0 j' H* \, X) F' E2 n) h4 s2 k Random rd1 = new Random();& D! d- t' X$ F6 R/ ~6 z3 ?! k
int select = rd1.nextInt(goodNumber);* K1 Z+ {6 t& [* w3 `( {% y0 R7 |2 M* t' a
potentialParterner = potenAgent[select];6 d. x- o0 i; t
value = true;( [0 W/ x! {; S8 o. Y h/ b) k
}
$ r! @5 Z' E2 v; I6 k return value;6 o1 z1 Y" p5 R9 O! V e* x$ J
}/ @) ^: u% g6 u: n- Y& ]
始终只能打印出XXXXXXXXXXXXXXXXXXXX,请各位帮帮忙。 |
|