|
|
5仿真币
最近做流行病模型,需要在一个网格里面放多个Agent,我查了一下API,使用OrderedMultiGrid类来构造,里面提供了一些putObjectAt(int, int, index);之类的东西。似乎可以用。但是当我编程调试的时候发现在同一位置只能获取一个对象。这是很令人纳闷的事情。我想问一下Repast有提供什么好方法处理吗,不仅要能存进去,还要能方便的拿出来。; M0 G; ?, d% K1 v6 N3 w) e
private boolean findPotentialPartner(){" ]7 m% A/ n# I7 `2 {7 n h- w
boolean value = false;& P) O+ g2 W0 K3 I8 r+ E d4 Q3 f
3 C m$ m: k, d& I0 k- U OrderedMulti2DGrid grid = space.getCurrentAgentSpace();& M. ]! R: B2 d
Iterator iterator = grid.getIteratorAt(x, y);/ m9 Z& x/ j: x+ A
SexAgent ag1 = null; * h8 y, j! Q- e" n' B. S
SexAgent [] potenAgent = new SexAgent[20];
; E8 |& Q" j' D2 d E int goodNumber = 0;/ j3 t5 k. N1 b9 G# x( M3 b
while(iterator.hasNext()){
5 I; h/ y& P, q5 r9 k System.out.println("XXXXXXXXXXXXXXXXXXXXX");; l' {" e$ S. k% ^
ag1 = (SexAgent)iterator.next();( U! ^# p% v5 ~" u* V% h$ _' j
if((ag1.sex == FEMALE)
2 J) w2 {3 J. ]" P5 K3 Q &&(!ag1.isCoupled())){2 G3 U1 Z1 G' a) o
System.out.println("YYYYYYYYYYYYYYYYYYYY");! T% W: M1 H& g# x$ t: b% @8 D
potenAgent[goodNumber] = ag1;
% x- @- p P/ T- m* ~ goodNumber ++;4 g+ L; @0 P7 w2 t, x% }8 K2 u
}
- K2 ?5 r: l6 j7 \: J# B: l }
1 x0 O7 S6 I( e/ B/ n. R8 E $ L# t) S$ V+ ^5 N; E) k& T5 y
if(goodNumber >0){
$ H4 E- z! P: K; n5 [( S1 V+ n System.out.println("ZZZZZZZZZZZZZZZZZZZZZZZZZZZZ"); : ]) }1 ~- j# _
Random rd1 = new Random();
- `. `7 C( ?: h( E. U5 { int select = rd1.nextInt(goodNumber);6 N" \' ?$ i% `0 v: g0 p; b0 s; @
potentialParterner = potenAgent[select];
* U8 h: u4 _; f. O/ U" ?: K m value = true;; y* m! n; N" a
}
/ U3 O2 f! C) { return value;
$ X8 }2 b* Y& v$ X* w2 _# L2 D0 z }
% d$ g% P: _3 U. N# m2 ?始终只能打印出XXXXXXXXXXXXXXXXXXXX,请各位帮帮忙。 |
|