|
5仿真币
最近做流行病模型,需要在一个网格里面放多个Agent,我查了一下API,使用OrderedMultiGrid类来构造,里面提供了一些putObjectAt(int, int, index);之类的东西。似乎可以用。但是当我编程调试的时候发现在同一位置只能获取一个对象。这是很令人纳闷的事情。我想问一下Repast有提供什么好方法处理吗,不仅要能存进去,还要能方便的拿出来。! C, D M( V$ P5 y, Q* k
private boolean findPotentialPartner(){0 k8 ]. u% K0 B& p& o2 a& z8 g
boolean value = false;
, M8 p4 M% M$ E3 U
@' J% |3 _! `6 p* y3 Q1 n" w OrderedMulti2DGrid grid = space.getCurrentAgentSpace();
7 m# f( M1 w! o" K l9 N! G Iterator iterator = grid.getIteratorAt(x, y);* Z: X' ]3 b- Y$ K5 b5 ~* |1 k* N5 F* s: p
SexAgent ag1 = null;
, r$ N+ k; d, }; I% z. g; H& v0 D SexAgent [] potenAgent = new SexAgent[20];
* K7 z% I5 c5 i: ^ O int goodNumber = 0;) k" B2 [( D, m* B
while(iterator.hasNext()){
+ w* d$ U: \; j9 B System.out.println("XXXXXXXXXXXXXXXXXXXXX");" N# B [4 O' u+ w0 ~ c
ag1 = (SexAgent)iterator.next();( r1 c# \1 h9 F; I5 K
if((ag1.sex == FEMALE)
4 J, M" o7 Y6 N &&(!ag1.isCoupled())){: Q8 n9 O" }( y' F# h5 Z9 O( f" E
System.out.println("YYYYYYYYYYYYYYYYYYYY");- z5 u _* i# l
potenAgent[goodNumber] = ag1;
! Y$ _ O) M5 @" [4 h' C+ D goodNumber ++;
, G. D# b* d# q8 s7 [; C% _ }. y" g" _ b; n
}% N1 C& w+ u$ J! e5 f6 w
% y( _+ _! D! u8 u6 J
if(goodNumber >0){$ @% m" Z& _; X2 {1 R
System.out.println("ZZZZZZZZZZZZZZZZZZZZZZZZZZZZ"); 9 U; N* a6 O, \, }8 j9 }* h- t. a
Random rd1 = new Random();6 G1 M4 W9 G/ ]6 C6 o7 C
int select = rd1.nextInt(goodNumber);% u( ^0 j s8 [" h& d$ D O
potentialParterner = potenAgent[select];2 B$ s ~2 N+ x- p" f F) K: p
value = true;
. o* Y E4 @3 u: u6 @ }+ T; h* L: N# ~$ T3 R0 C
return value;
H ?" N% B' i1 C }
h8 G; R1 E2 W! x3 w! U; l始终只能打印出XXXXXXXXXXXXXXXXXXXX,请各位帮帮忙。 |
|