|
|
5仿真币
最近做流行病模型,需要在一个网格里面放多个Agent,我查了一下API,使用OrderedMultiGrid类来构造,里面提供了一些putObjectAt(int, int, index);之类的东西。似乎可以用。但是当我编程调试的时候发现在同一位置只能获取一个对象。这是很令人纳闷的事情。我想问一下Repast有提供什么好方法处理吗,不仅要能存进去,还要能方便的拿出来。
; k, }" O# o% A* x( A* c- C private boolean findPotentialPartner(){4 X& G2 C$ G' l( b, M5 J f
boolean value = false;
8 H# ~8 P: z) { 2 C& K1 A2 H' e: b N" q
OrderedMulti2DGrid grid = space.getCurrentAgentSpace();3 l+ x# s& I1 {: q D' n6 g' N
Iterator iterator = grid.getIteratorAt(x, y);
' i7 s1 {6 C. G6 B SexAgent ag1 = null; 5 V. W( D" L; X! k- r
SexAgent [] potenAgent = new SexAgent[20];, { u2 k; _- {
int goodNumber = 0;- {( @5 z$ r/ p/ a2 A: k
while(iterator.hasNext()){
5 z" C6 _: _% z$ p4 |' ? System.out.println("XXXXXXXXXXXXXXXXXXXXX");
$ \) T8 ~' R2 R6 W ag1 = (SexAgent)iterator.next();8 a6 Y% N0 j9 ]
if((ag1.sex == FEMALE)
- X2 m% G2 B k' r: J &&(!ag1.isCoupled())){! O6 _- |0 p5 R( L$ l
System.out.println("YYYYYYYYYYYYYYYYYYYY");
( T8 ^7 U6 N" z( {6 C0 ~. M potenAgent[goodNumber] = ag1;
/ S8 d/ E {1 r. ~) T' C+ i goodNumber ++;
/ l" l7 d& u) l7 G6 ?9 q& Z" h }: J1 N9 @* W0 e
}" K1 p$ e- n: B$ j
! H. k1 Q9 [; N8 q, r if(goodNumber >0){! h4 ], N# o1 H/ ^, p' j1 P K
System.out.println("ZZZZZZZZZZZZZZZZZZZZZZZZZZZZ"); 1 a9 i$ B3 X* E) V
Random rd1 = new Random();
6 o& c' r8 ~# k [ int select = rd1.nextInt(goodNumber);- e! Z/ p' Z. @5 \, ~5 j0 n; Z: Y
potentialParterner = potenAgent[select];5 Y! ]; |* S# w
value = true;# j& r- F: E0 D% j# P" V, S/ a1 n
}0 A9 H/ }( P7 f7 `
return value;: B, d* O2 t% x; e) c( h
}
i4 c3 l, K2 q9 L& z x始终只能打印出XXXXXXXXXXXXXXXXXXXX,请各位帮帮忙。 |
|