|
|
5仿真币
最近做流行病模型,需要在一个网格里面放多个Agent,我查了一下API,使用OrderedMultiGrid类来构造,里面提供了一些putObjectAt(int, int, index);之类的东西。似乎可以用。但是当我编程调试的时候发现在同一位置只能获取一个对象。这是很令人纳闷的事情。我想问一下Repast有提供什么好方法处理吗,不仅要能存进去,还要能方便的拿出来。
/ T1 {" M5 B0 X0 y, b1 z; F private boolean findPotentialPartner(){
$ S' w" M9 I! R" k boolean value = false;
" B8 p0 g. T: E3 s; Q' C: H
3 U' j E7 C* i3 i, Z OrderedMulti2DGrid grid = space.getCurrentAgentSpace();% e- c. n# h0 d* c0 s
Iterator iterator = grid.getIteratorAt(x, y);5 K& k: _: }7 P b( a
SexAgent ag1 = null; }& h+ `3 b: W3 ]( h! u$ `
SexAgent [] potenAgent = new SexAgent[20];2 p- @+ n7 F2 |3 P8 ?4 ~" }! o
int goodNumber = 0;
4 l* C, |/ c, f. @" L while(iterator.hasNext()){" L9 L+ _. v1 Z
System.out.println("XXXXXXXXXXXXXXXXXXXXX");( A T! c4 g: T2 h
ag1 = (SexAgent)iterator.next();
" i; Y* |0 R" n$ o2 D! d if((ag1.sex == FEMALE)
4 E- e6 O, B7 f$ m) j2 q &&(!ag1.isCoupled())){
3 Y5 D S* e- P! ?! Y System.out.println("YYYYYYYYYYYYYYYYYYYY");3 |9 M/ D" c, U, u9 F0 \
potenAgent[goodNumber] = ag1;( k& D; r3 ]4 `2 `
goodNumber ++;
, N: d+ V$ {- p) P7 G }
J& ^, k, ~3 \$ g }
1 Q" h9 r- }6 Z( n: m. R
D5 B* S/ _, t$ X% q; q if(goodNumber >0){
% {$ z, _0 {9 v& y/ {4 K System.out.println("ZZZZZZZZZZZZZZZZZZZZZZZZZZZZ");
# v& y; }: q8 d R: G% `; v6 C Random rd1 = new Random();3 d* ?3 D) w! H
int select = rd1.nextInt(goodNumber);
) z( `! W3 c- O! K potentialParterner = potenAgent[select];
5 [% U; {! w$ Y% ?( S+ t value = true;+ ]1 Z6 ^# i6 R$ @* i; P6 g# y
}3 N, F& E6 \( U' v
return value;
0 `0 j) D4 i1 g( Z+ c9 A; X }
' z% L% i5 U; z' Z始终只能打印出XXXXXXXXXXXXXXXXXXXX,请各位帮帮忙。 |
|