|
5仿真币
最近做流行病模型,需要在一个网格里面放多个Agent,我查了一下API,使用OrderedMultiGrid类来构造,里面提供了一些putObjectAt(int, int, index);之类的东西。似乎可以用。但是当我编程调试的时候发现在同一位置只能获取一个对象。这是很令人纳闷的事情。我想问一下Repast有提供什么好方法处理吗,不仅要能存进去,还要能方便的拿出来。
' c- o. |2 F. p0 D- W private boolean findPotentialPartner(){
/ X6 J0 N$ `9 ^; q2 {, F boolean value = false;
( H3 Y% Q% D; h. a ) r4 s: a1 y! R) x/ }
OrderedMulti2DGrid grid = space.getCurrentAgentSpace();
1 J% X" ? z1 O( d x& I Iterator iterator = grid.getIteratorAt(x, y);2 i, d* s: \5 x( G! v7 a5 Q
SexAgent ag1 = null; - b( M; _# ~2 t* x+ U% I& T C
SexAgent [] potenAgent = new SexAgent[20];4 f" M. X) x( }( z; u% M, N
int goodNumber = 0;
" R9 L' {7 i, {. M- J- }+ h2 j while(iterator.hasNext()){7 s* ^ T. @" k& E! }
System.out.println("XXXXXXXXXXXXXXXXXXXXX");
8 v5 N+ J5 N2 r2 I) g7 e: k ag1 = (SexAgent)iterator.next();
- [4 C& o4 n |* i0 P) i if((ag1.sex == FEMALE)
% {% n1 v) T" i4 @7 w, g% l &&(!ag1.isCoupled())){
' P& e7 u5 c; c3 v7 n% R System.out.println("YYYYYYYYYYYYYYYYYYYY");- ?# a; d" G: g- w* u" p# R
potenAgent[goodNumber] = ag1;3 b# J" I I+ Z
goodNumber ++;' {7 M4 s* ~2 P2 Q. F& {. b
}
* ~6 s- u! [0 z$ L- s$ E }( V6 Y* N2 h9 ^# `# Z
* r! d$ k8 T7 W8 _6 d
if(goodNumber >0){* I# \* n1 t: P7 j
System.out.println("ZZZZZZZZZZZZZZZZZZZZZZZZZZZZ"); ; |7 F1 m2 S8 C/ T' }. D; @! i
Random rd1 = new Random();) s: w u% y* L1 F2 n
int select = rd1.nextInt(goodNumber);
2 p$ R* \) R* u* r% H1 W5 d# K potentialParterner = potenAgent[select];; \9 \& g$ R3 r6 K) a
value = true;
! d! a/ y2 \2 @& c }+ ]( f! r% j7 F$ \' v {1 \/ \) }
return value;, p' G6 Y1 \, M7 t) [$ y: R
}' Q, m$ ]0 `8 ~, M. o6 ^5 Y. H G2 W
始终只能打印出XXXXXXXXXXXXXXXXXXXX,请各位帮帮忙。 |
|