|
5仿真币
最近做流行病模型,需要在一个网格里面放多个Agent,我查了一下API,使用OrderedMultiGrid类来构造,里面提供了一些putObjectAt(int, int, index);之类的东西。似乎可以用。但是当我编程调试的时候发现在同一位置只能获取一个对象。这是很令人纳闷的事情。我想问一下Repast有提供什么好方法处理吗,不仅要能存进去,还要能方便的拿出来。( z! y, H$ T5 I1 g5 L
private boolean findPotentialPartner(){
2 o# _0 s/ i+ r/ B) z+ d% a7 h boolean value = false;
1 J2 ?( N( v$ c5 U5 D0 Q4 ^ 5 E; n" u6 m1 r" |9 l; }- H! s
OrderedMulti2DGrid grid = space.getCurrentAgentSpace();
8 e! {# n! W7 ?# D2 E7 n Iterator iterator = grid.getIteratorAt(x, y);( R) J. e% T6 e, |8 B8 ]+ V
SexAgent ag1 = null; $ E. M. g$ r0 g) a/ ^
SexAgent [] potenAgent = new SexAgent[20];( T6 F7 H; F4 ~ m7 u+ V
int goodNumber = 0;
- b8 S6 c% k* Z* i while(iterator.hasNext()){! }' v8 S$ h9 {5 ^7 J0 {
System.out.println("XXXXXXXXXXXXXXXXXXXXX");
8 v6 q8 `4 k- ?7 {$ \" \ ag1 = (SexAgent)iterator.next();
* N: O8 a7 ^2 `% V) M# F' p if((ag1.sex == FEMALE) : ~* M# x" F4 B7 ?! O+ F0 I6 o
&&(!ag1.isCoupled())){* N3 e/ k. t6 e, C' O
System.out.println("YYYYYYYYYYYYYYYYYYYY");
0 T1 s% M* q1 V7 ]( O/ B% \' j6 b potenAgent[goodNumber] = ag1;
: r1 [2 I8 e# i/ ^. K goodNumber ++;% `0 Z, X- U3 W% C! U( {% Q
}
6 |7 ^- r% g9 ~6 x8 E. t F1 e }2 |% j* A) W' T; h
8 t: g8 U# h" t
if(goodNumber >0){
7 t8 p* {( P" o8 i8 n0 K System.out.println("ZZZZZZZZZZZZZZZZZZZZZZZZZZZZ"); # H, \3 p7 g1 J, D7 h) C
Random rd1 = new Random();( [# ~+ R* T8 D8 I9 K7 ~) b
int select = rd1.nextInt(goodNumber);1 q j8 |: _8 W4 S
potentialParterner = potenAgent[select];
$ Q$ @& P/ [+ g$ U# C/ H% o value = true;
, Z5 k8 V. `1 h* `3 V }0 K8 j6 [% |3 R# l& H
return value;
! ]& A- Z& j) K) K9 ~4 U+ t1 h/ X0 I }
% G0 x. t) k3 t/ H始终只能打印出XXXXXXXXXXXXXXXXXXXX,请各位帮帮忙。 |
|