|
|
5仿真币
最近做流行病模型,需要在一个网格里面放多个Agent,我查了一下API,使用OrderedMultiGrid类来构造,里面提供了一些putObjectAt(int, int, index);之类的东西。似乎可以用。但是当我编程调试的时候发现在同一位置只能获取一个对象。这是很令人纳闷的事情。我想问一下Repast有提供什么好方法处理吗,不仅要能存进去,还要能方便的拿出来。% a# P7 H: Y; |. j& @* e
private boolean findPotentialPartner(){- Y0 P8 f+ q. r; P7 `
boolean value = false;& G2 D* ?/ w' u0 r' \8 l- M
! P: Q5 w0 T8 R7 K/ O; S' F
OrderedMulti2DGrid grid = space.getCurrentAgentSpace();
( _8 @! [. l/ f: s Iterator iterator = grid.getIteratorAt(x, y);4 d: i- |& Z/ W8 ]& d
SexAgent ag1 = null; % r) [( o s4 I- U' j
SexAgent [] potenAgent = new SexAgent[20];3 h3 T% K, k6 `. x
int goodNumber = 0;
& s, r- [3 Q' w while(iterator.hasNext()){
) j+ _7 u% {# C: | System.out.println("XXXXXXXXXXXXXXXXXXXXX");6 `4 \8 T( N* Q6 b4 ~
ag1 = (SexAgent)iterator.next();/ z4 p0 S4 z) o
if((ag1.sex == FEMALE)
9 B( X) z5 L4 _) g( f &&(!ag1.isCoupled())){7 M4 H/ k, z3 z, H, e
System.out.println("YYYYYYYYYYYYYYYYYYYY");
t5 @6 r# C4 N% o# m. l potenAgent[goodNumber] = ag1;
* G. I& d8 h b, U5 a7 y# } goodNumber ++;% A0 n0 N2 |; C d7 ~+ j! b
}, S5 c6 Q* P7 \) r4 k
}
6 |* w3 | h8 E* E# s
" \( C3 I% U$ B. k, { if(goodNumber >0){: i$ R8 }8 F4 z4 y7 S* x w8 T2 E
System.out.println("ZZZZZZZZZZZZZZZZZZZZZZZZZZZZ"); 7 R& V1 Y; S7 |. d1 T8 |- J" \
Random rd1 = new Random();
! K. Y6 y+ d" U% Y( d int select = rd1.nextInt(goodNumber);5 G+ o" q" w3 J
potentialParterner = potenAgent[select];
; p! x, `+ i( C E; ~% b: ?# @! P value = true;
1 j6 p" I) e) Z* ^" x }
3 B4 A" \; q- a$ A! [ return value;
M5 ]" o* ? E }4 ?$ R" p" q4 X- Q
始终只能打印出XXXXXXXXXXXXXXXXXXXX,请各位帮帮忙。 |
|