|
|
5仿真币
最近做流行病模型,需要在一个网格里面放多个Agent,我查了一下API,使用OrderedMultiGrid类来构造,里面提供了一些putObjectAt(int, int, index);之类的东西。似乎可以用。但是当我编程调试的时候发现在同一位置只能获取一个对象。这是很令人纳闷的事情。我想问一下Repast有提供什么好方法处理吗,不仅要能存进去,还要能方便的拿出来。
2 \) U8 T l w( a! _ private boolean findPotentialPartner(){! W" }; S3 C* D: c! d0 G1 \+ G
boolean value = false;) j3 M* l% X+ o4 |' d1 u
: ^" V' q" n6 G# C
OrderedMulti2DGrid grid = space.getCurrentAgentSpace();0 M/ k4 X ?. a4 o$ l, d
Iterator iterator = grid.getIteratorAt(x, y);
1 u' Q1 R9 m* y# H) N0 C SexAgent ag1 = null; * X- Z- _, [( }9 `/ X& E% G
SexAgent [] potenAgent = new SexAgent[20];) Q5 y2 r4 k3 [- H8 S% t
int goodNumber = 0;
4 }% c- ?. y4 }6 k; L) z6 d# b while(iterator.hasNext()){
1 [+ X: D" _( Z# z: a+ {6 I/ w System.out.println("XXXXXXXXXXXXXXXXXXXXX");$ N$ P2 b8 Q, t2 e" k( O7 K, x
ag1 = (SexAgent)iterator.next();
3 n* ?) q8 @1 @0 D8 r, k9 E if((ag1.sex == FEMALE)
! Y2 s0 p+ n# f% @. d &&(!ag1.isCoupled())){
- ^8 x3 R* z( }# c" u; y) K. K5 d- Q System.out.println("YYYYYYYYYYYYYYYYYYYY");, m& z: J, B* f, L& a: ?
potenAgent[goodNumber] = ag1;$ b7 ^" J. f6 f6 Q( T# i, `
goodNumber ++;( N+ ~8 C' r4 l% T0 J' N7 c7 W
}
% b8 q4 ~# L( D+ V8 u5 \2 a }: M$ l+ f4 V( `0 ~ ]& D
2 m+ L& N, v# _ \ if(goodNumber >0){
- }9 v2 k% v5 O System.out.println("ZZZZZZZZZZZZZZZZZZZZZZZZZZZZ"); 5 d+ ^5 F8 Q. x7 A
Random rd1 = new Random();
- d& w. u& n6 u" e int select = rd1.nextInt(goodNumber);
* }8 n) [. G/ A3 B P0 E& k' D potentialParterner = potenAgent[select];
+ @* n# B# Y, y: e- d! D) d! m value = true;- W$ g `6 }( Y. S& Q
}
: Y5 A$ H# N4 z* m. z- ], H return value;& m7 e+ |& L: h7 `
}; K; g) u4 J9 H) ?+ d: Z7 T
始终只能打印出XXXXXXXXXXXXXXXXXXXX,请各位帮帮忙。 |
|