|
|
5仿真币
最近做流行病模型,需要在一个网格里面放多个Agent,我查了一下API,使用OrderedMultiGrid类来构造,里面提供了一些putObjectAt(int, int, index);之类的东西。似乎可以用。但是当我编程调试的时候发现在同一位置只能获取一个对象。这是很令人纳闷的事情。我想问一下Repast有提供什么好方法处理吗,不仅要能存进去,还要能方便的拿出来。
* c1 T% E" }5 V' n) U0 d, S private boolean findPotentialPartner(){
- f7 V7 D1 M2 _1 E# `% y boolean value = false;% q& a( ~5 c1 A6 Y$ C2 k5 Z
5 Y) n. B2 N1 Y k OrderedMulti2DGrid grid = space.getCurrentAgentSpace();( n' F6 y2 G2 L8 \9 X
Iterator iterator = grid.getIteratorAt(x, y);
; y) o' i1 \$ I$ d: }5 ] SexAgent ag1 = null;
) r4 [6 d0 A3 C/ J7 c1 L SexAgent [] potenAgent = new SexAgent[20];3 A* }7 h& F. _
int goodNumber = 0;, m$ V# c6 H0 K1 s
while(iterator.hasNext()){
/ h a& ]9 S( \; X+ O( b6 M System.out.println("XXXXXXXXXXXXXXXXXXXXX");! h: X6 ]# M) B7 e- f
ag1 = (SexAgent)iterator.next();) }7 v5 i& R: S5 B) l B! [- x
if((ag1.sex == FEMALE)
# i8 v% N9 g J0 N3 ^' q+ R &&(!ag1.isCoupled())){
* S: S7 L3 r- r% \ System.out.println("YYYYYYYYYYYYYYYYYYYY");
3 \, H* V4 @9 `& Q potenAgent[goodNumber] = ag1;! M5 \' w9 z l5 @3 r6 R2 t
goodNumber ++;
; R4 u+ f$ c9 T }/ G( y+ S* e# `9 Y9 K s4 v
}3 @. q8 J$ G! a; y' a
+ s7 m( @; J0 n7 s if(goodNumber >0){
/ ^, o2 Z: t* m3 W9 b! _ System.out.println("ZZZZZZZZZZZZZZZZZZZZZZZZZZZZ");
5 m) B& E$ @1 D9 C# z' S/ n Random rd1 = new Random();& |2 ~# L+ U+ }9 T% L" ?( w
int select = rd1.nextInt(goodNumber);
5 A7 l% Z" k9 P& U9 a6 d potentialParterner = potenAgent[select];
+ J: u; A$ b6 f5 B; e2 I" h$ z value = true;0 {' L( I a1 L& \
}
7 ]; v7 ]. ?1 a% l return value;
5 ^0 G& ]7 V& ~% ^5 Y }3 A& C6 Q% j5 \( L& F* R
始终只能打印出XXXXXXXXXXXXXXXXXXXX,请各位帮帮忙。 |
|