|
|
5仿真币
最近做流行病模型,需要在一个网格里面放多个Agent,我查了一下API,使用OrderedMultiGrid类来构造,里面提供了一些putObjectAt(int, int, index);之类的东西。似乎可以用。但是当我编程调试的时候发现在同一位置只能获取一个对象。这是很令人纳闷的事情。我想问一下Repast有提供什么好方法处理吗,不仅要能存进去,还要能方便的拿出来。1 Z; w% i. L7 U0 _: I
private boolean findPotentialPartner(){0 E6 S8 S6 D: F' n
boolean value = false;) F7 x( }' h* A
; Y0 N2 c# `1 ]5 h* F8 _
OrderedMulti2DGrid grid = space.getCurrentAgentSpace();
; i9 U5 _$ }0 y( l0 t Iterator iterator = grid.getIteratorAt(x, y);
2 P+ h8 X3 x* J' C" J SexAgent ag1 = null;
0 n1 h, e% b: y2 T/ M+ p/ F SexAgent [] potenAgent = new SexAgent[20];, g6 m- R9 |3 j3 k2 x
int goodNumber = 0;+ N5 i' h, `, z% L
while(iterator.hasNext()){
) G, x; l: W- S6 j8 s6 d1 D) {+ N System.out.println("XXXXXXXXXXXXXXXXXXXXX");
( N/ v- t% U4 I0 r ag1 = (SexAgent)iterator.next();
6 ]7 x/ d* J4 K$ u4 G; N if((ag1.sex == FEMALE) " k* r9 D+ n4 I
&&(!ag1.isCoupled())){, D1 }) _ D- E, [7 O+ M: x/ w
System.out.println("YYYYYYYYYYYYYYYYYYYY");; R1 k6 T4 e% h) D1 ?( U5 w
potenAgent[goodNumber] = ag1;: p! c# o5 }+ j& ?
goodNumber ++;
9 m5 p0 i r5 m }
( T" q8 n7 }; h, ? }
4 d- e8 C2 z0 t1 P. x8 k5 m9 ]
3 m8 u. x+ B" l: P! D' @. @ if(goodNumber >0){0 f7 @4 D* y O2 }+ H3 T
System.out.println("ZZZZZZZZZZZZZZZZZZZZZZZZZZZZ"); 9 J8 u* U, M1 _( o( R* Y
Random rd1 = new Random();
" ?1 R# e9 f: b" Q% t int select = rd1.nextInt(goodNumber);9 z/ F# P: H% M L
potentialParterner = potenAgent[select];" n$ o; T* ?' P, S) |1 W' |! ?+ u
value = true;: A$ ^2 S2 c: j+ S
}3 K' N$ y$ L! P* C3 Z- o- j8 o4 h* e7 \
return value; k' [5 J1 i5 G$ [0 k {% V2 P
}9 z V4 K" v5 z" e* X' O
始终只能打印出XXXXXXXXXXXXXXXXXXXX,请各位帮帮忙。 |
|