|
|
5仿真币
最近做流行病模型,需要在一个网格里面放多个Agent,我查了一下API,使用OrderedMultiGrid类来构造,里面提供了一些putObjectAt(int, int, index);之类的东西。似乎可以用。但是当我编程调试的时候发现在同一位置只能获取一个对象。这是很令人纳闷的事情。我想问一下Repast有提供什么好方法处理吗,不仅要能存进去,还要能方便的拿出来。; M, i* [. @) n* Y* \( u) b
private boolean findPotentialPartner(){
( P8 J5 |0 a0 G5 p boolean value = false;- |! C( d0 z4 D+ l' I
5 y! j* z, w2 R) t2 T5 X$ @ OrderedMulti2DGrid grid = space.getCurrentAgentSpace();
" ?, M. S1 I( C Iterator iterator = grid.getIteratorAt(x, y);4 K- c( A5 F$ O
SexAgent ag1 = null;
# c. @) x: G$ D9 G. _ SexAgent [] potenAgent = new SexAgent[20];8 z9 l0 V+ p u1 A; T7 U
int goodNumber = 0;6 o* m2 O% {, `& v
while(iterator.hasNext()){ p/ w( P7 C, g' {' H; | n, `
System.out.println("XXXXXXXXXXXXXXXXXXXXX");5 A: W5 C' _/ t c) F$ T. h! m
ag1 = (SexAgent)iterator.next();
- h! a9 P5 P6 b8 [. v$ P& P" h0 s. ? if((ag1.sex == FEMALE)
1 M3 f8 K9 m$ I1 e &&(!ag1.isCoupled())){0 h6 M2 |0 m3 \ `) L- _" v: M
System.out.println("YYYYYYYYYYYYYYYYYYYY");9 t2 h' ~) y/ L% g' K7 j
potenAgent[goodNumber] = ag1;
2 r1 J$ {3 K( E( n2 ^ goodNumber ++;2 _2 y; u& Z7 H( Q) Y
}
) x1 |! |2 f3 T* [ }/ Z% @5 R4 \0 ?0 @1 C: f
3 P6 a Q6 l( f5 a( }* V8 g
if(goodNumber >0){
, T1 Y( C& U! A System.out.println("ZZZZZZZZZZZZZZZZZZZZZZZZZZZZ"); . e B1 f1 }6 a6 m: n
Random rd1 = new Random();
# s# [: w9 A) k5 Y/ K; ^! M int select = rd1.nextInt(goodNumber);9 B. y2 O# D; r) @) t
potentialParterner = potenAgent[select];
$ [+ m0 S! l) w( L! t% B1 v* t value = true;
4 ]# |4 c% X6 M e% d$ |' [8 t) \2 t }
% Z S( F2 ^8 Z1 { A return value;( {+ z5 s3 g* d2 x' w/ Q& d( c/ ?/ N
}" l7 u& M& L1 r, e' Y6 |4 o
始终只能打印出XXXXXXXXXXXXXXXXXXXX,请各位帮帮忙。 |
|