|
|
5仿真币
最近做流行病模型,需要在一个网格里面放多个Agent,我查了一下API,使用OrderedMultiGrid类来构造,里面提供了一些putObjectAt(int, int, index);之类的东西。似乎可以用。但是当我编程调试的时候发现在同一位置只能获取一个对象。这是很令人纳闷的事情。我想问一下Repast有提供什么好方法处理吗,不仅要能存进去,还要能方便的拿出来。
( H+ p- z7 Y+ ^& T5 i+ n private boolean findPotentialPartner(){
, b* L2 a! l5 N+ c6 r, ] boolean value = false;4 ]+ f7 {1 {+ e
- c# P5 m- m1 G1 L$ }/ e, c OrderedMulti2DGrid grid = space.getCurrentAgentSpace();
# P+ I1 p# T( p8 f6 w) o5 Y! N Iterator iterator = grid.getIteratorAt(x, y);
6 \* [ M3 v# X. S# U. S) A SexAgent ag1 = null; ; h; n; |7 W& Z o' @
SexAgent [] potenAgent = new SexAgent[20];8 d+ M( W4 V; t; J w* R& t4 c, Y
int goodNumber = 0;" i- Z2 C7 j6 R% M8 P
while(iterator.hasNext()){3 w0 a7 j, E. {8 p# k! E
System.out.println("XXXXXXXXXXXXXXXXXXXXX");
1 s/ w; }; l! j; Q Z ag1 = (SexAgent)iterator.next();
- ^1 ^' `) E' |1 ~ C8 d8 s$ ?% L: L if((ag1.sex == FEMALE)
2 R/ v" u0 [2 [" K0 y &&(!ag1.isCoupled())){
: a" b+ c% D% C System.out.println("YYYYYYYYYYYYYYYYYYYY");
( I) M5 X) W% M& o6 y9 d+ A' ? potenAgent[goodNumber] = ag1;
$ r% M @- V8 P. M: p, e3 V goodNumber ++;
8 A0 K; q5 }% R4 _' l8 W% k }
* u( ~8 Z r! c) n# C }
4 @% s. E8 T4 E+ ^3 C* v. @ : X8 h$ `' M7 B8 j! n
if(goodNumber >0){
# w7 [6 y# V$ t6 O# m& } System.out.println("ZZZZZZZZZZZZZZZZZZZZZZZZZZZZ"); ' z/ }" O( e6 y: k& U1 [6 m" f# X
Random rd1 = new Random();) J0 `" K' F( X( A% H; R
int select = rd1.nextInt(goodNumber);* z k2 V* }, _6 Q8 h' @
potentialParterner = potenAgent[select];
& n2 H% o3 @) P) c) S value = true;
) a9 n2 _: W6 K" m# g }
4 l$ v, o" ], B, |) v a0 @ return value;
- B% k2 J: c# ~" u }6 _, V8 u0 ^) R- a+ r. e
始终只能打印出XXXXXXXXXXXXXXXXXXXX,请各位帮帮忙。 |
|