|
|
5仿真币
最近做流行病模型,需要在一个网格里面放多个Agent,我查了一下API,使用OrderedMultiGrid类来构造,里面提供了一些putObjectAt(int, int, index);之类的东西。似乎可以用。但是当我编程调试的时候发现在同一位置只能获取一个对象。这是很令人纳闷的事情。我想问一下Repast有提供什么好方法处理吗,不仅要能存进去,还要能方便的拿出来。
( ]; I* V G# x4 T8 J1 O private boolean findPotentialPartner(){( W% m6 `' L$ z, B
boolean value = false;
# a/ w. S8 | c* O$ b % B# M& K# `/ ]( y9 e3 Z* q4 a' ^
OrderedMulti2DGrid grid = space.getCurrentAgentSpace();) p; N) M& x7 ?, {5 K5 J! g9 G, p# M
Iterator iterator = grid.getIteratorAt(x, y);5 A6 Z8 g2 {8 M y8 m
SexAgent ag1 = null; 0 [5 w3 K; ]- e! y, N1 e
SexAgent [] potenAgent = new SexAgent[20];) D8 P: V6 K) @( U [" n0 o
int goodNumber = 0;* p2 F* _1 @5 \8 s
while(iterator.hasNext()){
* P, Y7 n. i& B4 _6 p0 k2 S System.out.println("XXXXXXXXXXXXXXXXXXXXX");
! L6 V H/ P/ u, X: S+ M$ Q0 [# \ ag1 = (SexAgent)iterator.next(); K( C9 R- i( Z9 M6 F4 N1 j
if((ag1.sex == FEMALE)
3 B7 c0 `5 }) w. c' f &&(!ag1.isCoupled())){2 j# A8 @3 @# y$ T! ~5 S2 S) |
System.out.println("YYYYYYYYYYYYYYYYYYYY");
7 L0 ]0 C$ r% f1 G; ~( c1 i$ ` potenAgent[goodNumber] = ag1;
( Y1 z9 v, Q9 N( [- D8 }0 b goodNumber ++;
: ^% c+ ~0 ?* e3 ~' ~, J }
0 S7 y5 z8 s0 B }
& L7 M r8 ^5 P6 C
0 U2 T. g8 i V5 _ if(goodNumber >0){
/ i/ z( J9 o. h2 |: J5 G; D System.out.println("ZZZZZZZZZZZZZZZZZZZZZZZZZZZZ"); 1 `0 f5 o8 Q7 Y) k
Random rd1 = new Random();" x! ~7 {9 k9 w
int select = rd1.nextInt(goodNumber);% p m' V4 S A* F4 v" n
potentialParterner = potenAgent[select];% E: g$ n$ n! B8 _6 e
value = true;
}$ b0 H K0 a5 F3 }5 Z! D7 l }; |0 i& a' r5 J, N; b
return value;+ M6 V& R7 j! C+ n7 G
}/ F8 }$ k1 }* x8 S8 Z, ~4 {
始终只能打印出XXXXXXXXXXXXXXXXXXXX,请各位帮帮忙。 |
|