|
|
5仿真币
最近做流行病模型,需要在一个网格里面放多个Agent,我查了一下API,使用OrderedMultiGrid类来构造,里面提供了一些putObjectAt(int, int, index);之类的东西。似乎可以用。但是当我编程调试的时候发现在同一位置只能获取一个对象。这是很令人纳闷的事情。我想问一下Repast有提供什么好方法处理吗,不仅要能存进去,还要能方便的拿出来。, j/ k* o) e, {: @# l$ k5 v* j- ~. k
private boolean findPotentialPartner(){
1 _9 b6 {' w# v2 J, X boolean value = false; @7 n' K7 U: T% ^5 K' {
+ _9 h2 ?4 L2 }, H: } OrderedMulti2DGrid grid = space.getCurrentAgentSpace();+ ]6 b% Q. `4 ]3 k$ \
Iterator iterator = grid.getIteratorAt(x, y);
7 A, |+ \( @ j6 \+ k( m8 w; I SexAgent ag1 = null; # J- y# }( D6 X4 O) ]' e4 h5 h
SexAgent [] potenAgent = new SexAgent[20];
; d6 D& ?- F/ b* C7 c( B( @/ j) ~ int goodNumber = 0;
) z9 y% ]5 j) D8 h: D while(iterator.hasNext()){
9 T5 t7 J4 G2 L% l9 f System.out.println("XXXXXXXXXXXXXXXXXXXXX");5 _5 J) J1 W; |5 b- u2 n3 G# \: M, l
ag1 = (SexAgent)iterator.next();
+ [ D% V: |8 x M- C, I0 x9 I if((ag1.sex == FEMALE)
0 F( a. J" O# {8 [$ f$ E &&(!ag1.isCoupled())){, w9 [+ E0 e' @* m; i5 T( W& G) A7 I
System.out.println("YYYYYYYYYYYYYYYYYYYY");" `2 G) ?# a/ |0 H( E% v# C
potenAgent[goodNumber] = ag1;
3 m1 F2 w' C; A goodNumber ++;
2 u& l9 f5 h. d# h }
7 k6 s$ W! _: f! B' I }) {* D9 m L' z
. u& _7 w& P v
if(goodNumber >0){ V: R# C, t9 G$ n; U- B+ w. s$ l& x
System.out.println("ZZZZZZZZZZZZZZZZZZZZZZZZZZZZ"); . y9 ^* Q3 \3 Z5 q
Random rd1 = new Random();% c& P2 p: I, [$ t6 K, @" n' h. P
int select = rd1.nextInt(goodNumber);
0 m# G6 k7 z; N' v- } potentialParterner = potenAgent[select];
: P9 l( S1 N9 b8 i* q; x0 S! y value = true;
9 B% F: @' V6 Z/ O }% W/ R: b3 h( ?4 W' A9 y2 C
return value;
6 a- I+ [7 v* C4 i }' z9 v. h2 ^, y8 r7 z
始终只能打印出XXXXXXXXXXXXXXXXXXXX,请各位帮帮忙。 |
|