|
|
5仿真币
最近做流行病模型,需要在一个网格里面放多个Agent,我查了一下API,使用OrderedMultiGrid类来构造,里面提供了一些putObjectAt(int, int, index);之类的东西。似乎可以用。但是当我编程调试的时候发现在同一位置只能获取一个对象。这是很令人纳闷的事情。我想问一下Repast有提供什么好方法处理吗,不仅要能存进去,还要能方便的拿出来。
/ I* l* E0 b, C' @5 ]1 Z5 l private boolean findPotentialPartner(){
" a. ?2 a' [& \- Q5 g6 O boolean value = false;
( J6 z6 ~ f2 Q; P + x+ |0 ~$ U0 Q% ]
OrderedMulti2DGrid grid = space.getCurrentAgentSpace();
/ S q1 H, R* O" E Iterator iterator = grid.getIteratorAt(x, y);
+ M) a, K) Y5 X. O6 p; R SexAgent ag1 = null;
' W& w Y! R7 K; d$ p0 q SexAgent [] potenAgent = new SexAgent[20];
* C* H- b0 W6 t' b+ c int goodNumber = 0;
- T; ^) P7 F+ x. M while(iterator.hasNext()){
& c% F U/ H+ O" U8 a; q) o System.out.println("XXXXXXXXXXXXXXXXXXXXX");$ d! l' i4 x6 k
ag1 = (SexAgent)iterator.next();
% \5 F1 x& v6 c( ^9 {6 L if((ag1.sex == FEMALE) + y5 |# H9 s m3 A# G5 m) i
&&(!ag1.isCoupled())){$ G& U4 S, u9 f9 p: a
System.out.println("YYYYYYYYYYYYYYYYYYYY");
1 r: W0 @) | u0 \: E4 e: \7 n: T, V potenAgent[goodNumber] = ag1;
, v/ y9 u' v2 x% t; s G6 s2 c goodNumber ++;/ ?2 {/ T: B; k i# D+ R
}
+ b- Z; z8 A Z) g }
- ~6 I6 b4 q0 {
1 h4 W% b2 `6 X6 F3 } if(goodNumber >0){" \3 o: [, i6 ?" G- r2 p
System.out.println("ZZZZZZZZZZZZZZZZZZZZZZZZZZZZ");
5 J5 s( ^1 C( Q: o5 s Random rd1 = new Random();
1 n4 `7 R& c, T Y) ~6 g0 K int select = rd1.nextInt(goodNumber);
* [/ y% d" T$ w' D' c6 J) I potentialParterner = potenAgent[select];: E8 Z! X, x6 m. U: ]: M* }
value = true;/ }$ D9 u1 @9 x }
}; |# C0 V. T/ V
return value;
, x5 D6 n! Y- b }
: b0 l& J: X# y0 C: o6 ~( o始终只能打印出XXXXXXXXXXXXXXXXXXXX,请各位帮帮忙。 |
|