|
5仿真币
最近做流行病模型,需要在一个网格里面放多个Agent,我查了一下API,使用OrderedMultiGrid类来构造,里面提供了一些putObjectAt(int, int, index);之类的东西。似乎可以用。但是当我编程调试的时候发现在同一位置只能获取一个对象。这是很令人纳闷的事情。我想问一下Repast有提供什么好方法处理吗,不仅要能存进去,还要能方便的拿出来。- J8 c5 P. f5 j9 I. ]2 Q. ?% v
private boolean findPotentialPartner(){
5 e7 L: g+ F! y' K8 B: G7 d8 `( e+ \ boolean value = false;
$ W0 l& }0 B s* @1 }" `: C
# M# p+ x$ ~' d) a" k OrderedMulti2DGrid grid = space.getCurrentAgentSpace();
) u k8 n1 {9 u( H Iterator iterator = grid.getIteratorAt(x, y);) B- \, c6 O( W2 ]' ^+ d/ {
SexAgent ag1 = null;
6 T& ]5 q }7 v# ^* b1 s SexAgent [] potenAgent = new SexAgent[20];% y3 p& I! ?" D7 m
int goodNumber = 0;/ [4 @! n# n& M9 z4 U
while(iterator.hasNext()){2 i7 B: U$ [/ ~+ O q Z! P C3 D
System.out.println("XXXXXXXXXXXXXXXXXXXXX");5 P- ]$ N) Y- U& `; b
ag1 = (SexAgent)iterator.next();" l" q2 M$ {, F( H4 r
if((ag1.sex == FEMALE)
* G, C8 h1 o8 Z( a& u2 T &&(!ag1.isCoupled())){/ `+ K, r# k. b6 K( \3 g
System.out.println("YYYYYYYYYYYYYYYYYYYY");
- k, k% N2 D3 f' _$ W% O! ^4 C7 a potenAgent[goodNumber] = ag1;$ [& _0 Q5 w6 u! L. W$ J
goodNumber ++;
: C+ |2 q0 t) G }5 J) K* M! r) Y$ o6 Q" G
}6 H3 s0 x0 b2 e0 m6 E6 z9 \7 c% N
1 T M# M/ y: a3 ^- }! ?8 n' J
if(goodNumber >0){
* U( ~, O! R4 x3 b# ] System.out.println("ZZZZZZZZZZZZZZZZZZZZZZZZZZZZ");
8 `6 H! ]9 R/ C0 N( F Random rd1 = new Random();: n2 e% Q& w3 q4 S. X7 z
int select = rd1.nextInt(goodNumber);4 i7 |6 {6 }1 [+ O- _
potentialParterner = potenAgent[select];0 R7 u( p% j2 `4 V+ o& l# M
value = true;
p* o- k% U k( m8 X+ b3 w9 o }
9 E: t% e7 @* q6 c$ |. ^ return value;+ _: V* D1 A5 h$ j2 T
}
0 q% u+ r- L: m+ _始终只能打印出XXXXXXXXXXXXXXXXXXXX,请各位帮帮忙。 |
|