|
|
5仿真币
最近做流行病模型,需要在一个网格里面放多个Agent,我查了一下API,使用OrderedMultiGrid类来构造,里面提供了一些putObjectAt(int, int, index);之类的东西。似乎可以用。但是当我编程调试的时候发现在同一位置只能获取一个对象。这是很令人纳闷的事情。我想问一下Repast有提供什么好方法处理吗,不仅要能存进去,还要能方便的拿出来。3 N; I* H, H1 j% L: q1 E
private boolean findPotentialPartner(){
; C% P, c1 ~) D3 N* T1 ? boolean value = false;7 \9 P, e7 c, F4 F8 F- C( w% A0 a1 h
+ N& j, N( y# z* }
OrderedMulti2DGrid grid = space.getCurrentAgentSpace();% d2 Q& T# e- m- W* \2 i$ l0 U
Iterator iterator = grid.getIteratorAt(x, y);% T+ t/ D3 ?! M; Y% Z+ k9 c3 A
SexAgent ag1 = null;
# b$ {# D f; Q: U1 B, X) } SexAgent [] potenAgent = new SexAgent[20];+ @3 O" B1 C% ]; [
int goodNumber = 0;" }5 P2 Y. b0 |) b: s/ {
while(iterator.hasNext()){
. l* w, t0 s6 U) _; m4 ~2 j System.out.println("XXXXXXXXXXXXXXXXXXXXX");
5 V# z) j7 @9 Z- l# ~# Q ag1 = (SexAgent)iterator.next();2 _0 ?4 r9 {- Y
if((ag1.sex == FEMALE)
! {% h0 K' I( B4 n; h. H+ v9 O* l &&(!ag1.isCoupled())){
% A# l! Q, L. h) {" T- l, a System.out.println("YYYYYYYYYYYYYYYYYYYY");
! a4 U6 p" Y' e potenAgent[goodNumber] = ag1;8 ]. j" L* T2 y8 g3 r1 R) }) ^
goodNumber ++;
. l# t& _ C w- y }
k8 Z p a" i L# }* Z' V }1 z. U: v, v* R
; Q+ s8 V! V: U; O& w
if(goodNumber >0){. k. H5 ~' M k e
System.out.println("ZZZZZZZZZZZZZZZZZZZZZZZZZZZZ"); % Z6 w7 @ ]# F$ {( `, x
Random rd1 = new Random();2 X$ B/ S8 ^6 j
int select = rd1.nextInt(goodNumber);5 J) O7 i( N# d! c- B* k f. d0 S
potentialParterner = potenAgent[select];
` Q! J/ w- |. X G4 Q9 R value = true;; ^' W- X! T1 K; h
}4 _( f8 `7 I+ Y+ l1 H# F
return value;
, w' d7 q8 M' R! y }
/ a& O: a5 ~+ W! N, G6 A始终只能打印出XXXXXXXXXXXXXXXXXXXX,请各位帮帮忙。 |
|