|
|
5仿真币
最近做流行病模型,需要在一个网格里面放多个Agent,我查了一下API,使用OrderedMultiGrid类来构造,里面提供了一些putObjectAt(int, int, index);之类的东西。似乎可以用。但是当我编程调试的时候发现在同一位置只能获取一个对象。这是很令人纳闷的事情。我想问一下Repast有提供什么好方法处理吗,不仅要能存进去,还要能方便的拿出来。
; g5 c3 K/ \/ b; u private boolean findPotentialPartner(){2 t# D+ c0 V7 I5 L. L5 j) t7 _* h
boolean value = false;
$ u3 u+ L/ L9 o5 A2 W
. r; x- y! d) {0 O- G( z$ a OrderedMulti2DGrid grid = space.getCurrentAgentSpace();
; k x7 X3 i7 K- A2 p Iterator iterator = grid.getIteratorAt(x, y);+ I( i" L1 d2 a. V" k! D* y' a9 R
SexAgent ag1 = null;
|' W O* J$ J: K/ Y, K SexAgent [] potenAgent = new SexAgent[20];
5 P7 w8 ?; i$ f% F int goodNumber = 0;) a8 r' u0 N9 x. i* Y) @
while(iterator.hasNext()){3 @6 a. r3 A/ w% ]5 k% n' I4 j
System.out.println("XXXXXXXXXXXXXXXXXXXXX");
$ \$ P S# m- l$ D( c2 F5 @; | ag1 = (SexAgent)iterator.next();
" s( G2 }. G* Q6 u4 U if((ag1.sex == FEMALE)
/ Y# u2 i* E2 Z4 x. i7 }0 t &&(!ag1.isCoupled())){
) b+ A4 g" V7 W* S& F System.out.println("YYYYYYYYYYYYYYYYYYYY");0 V& J/ V- W; w' w# n2 x
potenAgent[goodNumber] = ag1;: Q; C/ }4 q B$ s0 W* W$ a7 B
goodNumber ++;
1 V% d/ `, _' v/ I8 H% T/ w% l }1 T7 u, `- q6 J/ D8 u' S" _
}! K9 [* M" B: i. x# T: z8 \, ?
! H ^+ c. ^! I* [1 t, G" ~
if(goodNumber >0){6 k& F0 T7 R9 C7 v4 f3 @9 V- Z
System.out.println("ZZZZZZZZZZZZZZZZZZZZZZZZZZZZ");
& v1 r# E( A$ e* G Random rd1 = new Random();1 O4 k3 ?8 j7 q9 L; @7 i
int select = rd1.nextInt(goodNumber);5 S7 e* J2 L: o/ s. f! j
potentialParterner = potenAgent[select];
: \: N# X: n1 o u* o0 }2 i) a value = true;- A. ]7 j4 {0 t9 b9 ^
}
+ P+ P5 L4 l" e return value;
7 L" Z7 I) Y: F# Q$ P }
. o5 g4 s7 \" R1 X始终只能打印出XXXXXXXXXXXXXXXXXXXX,请各位帮帮忙。 |
|