|
|
5仿真币
最近做流行病模型,需要在一个网格里面放多个Agent,我查了一下API,使用OrderedMultiGrid类来构造,里面提供了一些putObjectAt(int, int, index);之类的东西。似乎可以用。但是当我编程调试的时候发现在同一位置只能获取一个对象。这是很令人纳闷的事情。我想问一下Repast有提供什么好方法处理吗,不仅要能存进去,还要能方便的拿出来。. ^" W# a; e* z" u J5 [
private boolean findPotentialPartner(){
' t* n3 ?; {; K0 b& L7 W$ y boolean value = false;
4 ~ ?: z3 k) j2 k, V+ } 8 x5 t% Y0 o: [( o1 V
OrderedMulti2DGrid grid = space.getCurrentAgentSpace();% t s" d3 N) r% u' z5 t
Iterator iterator = grid.getIteratorAt(x, y);2 a c% i0 o/ U3 z7 o" d
SexAgent ag1 = null;
9 M- S" @8 r+ V$ G6 i" m# }' k SexAgent [] potenAgent = new SexAgent[20];: C$ s: V# N1 N
int goodNumber = 0;5 ^1 k' |: z: Y3 b8 @- u
while(iterator.hasNext()){
( Q0 p" X7 S# g d* x8 u3 l' q" M System.out.println("XXXXXXXXXXXXXXXXXXXXX");
6 K$ m+ V& Z- H3 A+ Z) D" y U ag1 = (SexAgent)iterator.next();5 u. u) ~- M6 r2 E2 a
if((ag1.sex == FEMALE)
9 p& O8 E* ~) n+ F& L+ K9 _ &&(!ag1.isCoupled())){
% ]9 g4 k0 ]! _+ {+ @ System.out.println("YYYYYYYYYYYYYYYYYYYY");
: I0 V; O$ ?3 |4 R4 b potenAgent[goodNumber] = ag1;
/ T: D0 Q. P& ` goodNumber ++; ^' Y L1 g9 s& A, ]+ t9 S( l
}
8 u/ j4 k5 n- y: N, L, h }( L" Q, R; x2 V' }
2 ~& l, V) O& R/ _* m3 \ if(goodNumber >0){7 X6 N- M6 Z5 ?+ A9 E
System.out.println("ZZZZZZZZZZZZZZZZZZZZZZZZZZZZ"); ! ]" e7 E. f; e1 ?0 i0 X
Random rd1 = new Random();
3 e; Z3 |9 U. h) H int select = rd1.nextInt(goodNumber);
) f, u5 `) D4 U, r3 Z" G potentialParterner = potenAgent[select];1 ^4 A% y5 N, r% n' i
value = true;
. X9 U! U q" d' D# H- d }
7 F, N3 ]- k5 O5 y1 |' _% U' [ return value;' C! p! M' Y, N: V: }5 ~5 ~/ R
}
; n$ R: c1 ^ v! l# J8 S, P$ w始终只能打印出XXXXXXXXXXXXXXXXXXXX,请各位帮帮忙。 |
|