|
|
5仿真币
最近做流行病模型,需要在一个网格里面放多个Agent,我查了一下API,使用OrderedMultiGrid类来构造,里面提供了一些putObjectAt(int, int, index);之类的东西。似乎可以用。但是当我编程调试的时候发现在同一位置只能获取一个对象。这是很令人纳闷的事情。我想问一下Repast有提供什么好方法处理吗,不仅要能存进去,还要能方便的拿出来。
% \4 W! L$ u6 o% u private boolean findPotentialPartner(){9 w- [& S( c# u+ X9 E0 p$ ^
boolean value = false;
% J' t8 m k( W) I0 G
4 N/ p$ ^) H) Q* G0 O$ O OrderedMulti2DGrid grid = space.getCurrentAgentSpace();7 V$ S6 C+ V& ?$ i8 @ Q
Iterator iterator = grid.getIteratorAt(x, y);
) ]9 e! x3 Q# E% J8 f3 k* K SexAgent ag1 = null;
2 u, F/ L% L; y- W% A; ~- }5 c' S0 _ SexAgent [] potenAgent = new SexAgent[20];
# \* p0 M* J3 R6 o int goodNumber = 0;
# \4 T0 _4 W7 [2 E1 r while(iterator.hasNext()){
: H5 ?+ G4 ^) G( P' p. |" F5 Z System.out.println("XXXXXXXXXXXXXXXXXXXXX");
/ y* N( v* i7 R# D; ]3 D8 G/ @ ag1 = (SexAgent)iterator.next();
8 {) `' v! J& c! Y if((ag1.sex == FEMALE)
& N9 q. b1 u' }; ]2 i: @ &&(!ag1.isCoupled())){! U7 h8 G* _* h9 Q4 N5 N& N6 M/ S
System.out.println("YYYYYYYYYYYYYYYYYYYY");( p+ }/ K0 P; Z5 f$ h! J
potenAgent[goodNumber] = ag1;1 B$ k1 R$ G, D2 v; l" n: X7 Q) I
goodNumber ++;
" b7 @: F7 l, z' d8 g% O }9 }/ v$ `+ e f' y. x) r$ \; s" e
}
1 H" F; h- e w d& I) N. H - A9 U5 N3 |1 F, E
if(goodNumber >0){2 s% c6 j. i7 c c
System.out.println("ZZZZZZZZZZZZZZZZZZZZZZZZZZZZ"); 3 b$ L$ T9 C1 b# h! ?1 I, n
Random rd1 = new Random();1 z- M1 {3 P8 g3 T
int select = rd1.nextInt(goodNumber);
' \, d0 e# W$ q0 {5 x6 n3 I1 k potentialParterner = potenAgent[select];
* n, \8 |' U& s2 a8 d# Y value = true;
1 O* S, N7 s& Y3 Y }
! K' ~! J* ^$ i6 ^ return value;
' _/ t) x+ E7 P' j) _: \8 Z( h }
1 N+ A, S% Q2 z# N始终只能打印出XXXXXXXXXXXXXXXXXXXX,请各位帮帮忙。 |
|