|
|
5仿真币
最近做流行病模型,需要在一个网格里面放多个Agent,我查了一下API,使用OrderedMultiGrid类来构造,里面提供了一些putObjectAt(int, int, index);之类的东西。似乎可以用。但是当我编程调试的时候发现在同一位置只能获取一个对象。这是很令人纳闷的事情。我想问一下Repast有提供什么好方法处理吗,不仅要能存进去,还要能方便的拿出来。. p% q, W& y- V: L
private boolean findPotentialPartner(){& ]; ~$ a$ i+ ?3 {, Z+ s Z* e% Y+ `
boolean value = false;7 [% t% O/ e* [. V. ^: l
$ B6 N7 l' C& c- W
OrderedMulti2DGrid grid = space.getCurrentAgentSpace();
! J! u E P# d9 W/ ?8 w Iterator iterator = grid.getIteratorAt(x, y);& N" s+ d) G! z1 B: X
SexAgent ag1 = null;
$ I1 ]( V. W) o6 I SexAgent [] potenAgent = new SexAgent[20];
8 p7 U9 h7 j, f int goodNumber = 0;
+ D, ?# T& S& l" C while(iterator.hasNext()){
V$ q% I, u1 ^+ E4 f8 I* b" E System.out.println("XXXXXXXXXXXXXXXXXXXXX");# J& o3 ~# p) j- d+ M
ag1 = (SexAgent)iterator.next();
2 \# E) A4 ^) b2 g if((ag1.sex == FEMALE)
6 f, z2 a* ~6 P I: a$ N5 e &&(!ag1.isCoupled())){/ h2 O4 o9 Y _/ f' x
System.out.println("YYYYYYYYYYYYYYYYYYYY");
0 B9 X8 B' E: x$ Y* E potenAgent[goodNumber] = ag1;
+ v( B8 e* z8 |/ o& [) ~ goodNumber ++;1 e* i+ I% I4 W3 x2 v5 l
}* h- ]$ q0 ~4 B( N- r( t
}) m m2 x& S7 s$ ?5 j3 Z
$ O5 c3 J. ^9 a8 B# I! [ if(goodNumber >0){
0 B& ]9 w8 R) @6 ]: t; }. e System.out.println("ZZZZZZZZZZZZZZZZZZZZZZZZZZZZ"); : e. O9 d& O" }, ?
Random rd1 = new Random();
4 L, t$ |- B, D! @: P# M$ r int select = rd1.nextInt(goodNumber);
8 o+ R; v; L% o* l. M- F potentialParterner = potenAgent[select];
! y7 `3 F, U: D- P. l& _; i# Y value = true;
8 v' E/ j. |' f. n/ d: u }9 q3 g% O g% [/ A' C
return value;' N- X- [$ {" E
}
' L. w5 H+ u' |( I' u5 ]7 J2 T始终只能打印出XXXXXXXXXXXXXXXXXXXX,请各位帮帮忙。 |
|