|
|
5仿真币
最近做流行病模型,需要在一个网格里面放多个Agent,我查了一下API,使用OrderedMultiGrid类来构造,里面提供了一些putObjectAt(int, int, index);之类的东西。似乎可以用。但是当我编程调试的时候发现在同一位置只能获取一个对象。这是很令人纳闷的事情。我想问一下Repast有提供什么好方法处理吗,不仅要能存进去,还要能方便的拿出来。
7 }7 ^! `& T/ j private boolean findPotentialPartner(){" m- J, p4 T! v+ l/ t5 C
boolean value = false;
+ T5 T" c$ A, U/ V) ` / F2 U5 F1 ^* h [4 C+ P
OrderedMulti2DGrid grid = space.getCurrentAgentSpace();0 o5 A1 C; j d4 \' R
Iterator iterator = grid.getIteratorAt(x, y); J: h+ n, D6 T; o* q
SexAgent ag1 = null; " g" }# F D% z5 i! G
SexAgent [] potenAgent = new SexAgent[20];0 ] z) b/ ? W' O, Y. g1 ^
int goodNumber = 0;# j. c+ |# Q# p3 Q- E: e
while(iterator.hasNext()){
: f- \. l [: T { System.out.println("XXXXXXXXXXXXXXXXXXXXX");- X, t( ]5 q6 \- D- Z J( H, ?
ag1 = (SexAgent)iterator.next();
* c" A) R+ g0 U( t% k( m if((ag1.sex == FEMALE)
/ n( _8 g: ]& W7 ` &&(!ag1.isCoupled())){, C* T$ O5 [# c
System.out.println("YYYYYYYYYYYYYYYYYYYY");
9 S$ i- D; b. _3 q8 W; I& p. a potenAgent[goodNumber] = ag1;3 x5 f& }- o" _ ? F9 C, P
goodNumber ++;0 k) y" C: u, c
}
9 y" x: M8 T$ }2 A }
& Z# ~+ E" _2 u1 v 0 z6 G, T5 H' U9 c4 J ]* n
if(goodNumber >0){% y; c" i5 _$ ~6 V. r8 ^
System.out.println("ZZZZZZZZZZZZZZZZZZZZZZZZZZZZ");
( N9 l, v' r1 r% ]/ s9 X% _0 s Random rd1 = new Random();
; Z! l/ n: Q* h) b. K8 g/ K; v int select = rd1.nextInt(goodNumber);
" s: M: Y5 W* @: c3 V9 D) { potentialParterner = potenAgent[select];
/ @. _. s- D1 p" L5 w$ n value = true;( {" c7 p. `6 a% A. K4 q
}+ T! E% L; j) D3 i. T+ l! i; P2 F
return value;
_5 o3 B- G1 T! X3 h+ E }
2 I& j2 ~# B5 s# p: u始终只能打印出XXXXXXXXXXXXXXXXXXXX,请各位帮帮忙。 |
|