|
|
5仿真币
最近做流行病模型,需要在一个网格里面放多个Agent,我查了一下API,使用OrderedMultiGrid类来构造,里面提供了一些putObjectAt(int, int, index);之类的东西。似乎可以用。但是当我编程调试的时候发现在同一位置只能获取一个对象。这是很令人纳闷的事情。我想问一下Repast有提供什么好方法处理吗,不仅要能存进去,还要能方便的拿出来。
+ ^4 a( n0 I+ ^ private boolean findPotentialPartner(){
" c# i J: D% f, w. c boolean value = false;8 X- e' P7 l, A4 P: @- q
' S1 @& v1 A& O- p6 b
OrderedMulti2DGrid grid = space.getCurrentAgentSpace();. w$ |* g" g* Y: e. j( N+ ? O
Iterator iterator = grid.getIteratorAt(x, y);
% L/ N* i' z2 }! g7 { SexAgent ag1 = null; 5 K: _1 C* k8 w3 ]$ X/ |# B9 L0 r7 g
SexAgent [] potenAgent = new SexAgent[20];
9 X, S6 Y! {# D7 i ] int goodNumber = 0;
7 x) } t' I1 x7 O% l/ T l while(iterator.hasNext()){ I/ p- [+ v2 M
System.out.println("XXXXXXXXXXXXXXXXXXXXX");; a( L9 @ Z& i9 g! {) W& p
ag1 = (SexAgent)iterator.next();
6 c6 T* a2 l$ S0 R' P% j if((ag1.sex == FEMALE) # C$ R! t$ J# r! V" T
&&(!ag1.isCoupled())){3 V/ q+ e* I. v% l; F9 X J+ B" e
System.out.println("YYYYYYYYYYYYYYYYYYYY");& G: y: k q# \8 ~- U
potenAgent[goodNumber] = ag1;
5 w( e+ k1 h! ]" `) Q5 I' [! b: p- y goodNumber ++;4 p* |. m Q+ b" c
}
9 T2 Y% S# Q2 y; `4 b }
" U% G) X5 C* a* k: g- n
- y4 R3 E# `( ~% n4 @1 V5 | if(goodNumber >0){3 [" ^7 {% N4 Z1 R
System.out.println("ZZZZZZZZZZZZZZZZZZZZZZZZZZZZ"); , y- R5 Q: E. k% A+ [
Random rd1 = new Random();
! ?6 ]1 o3 d$ G+ c/ L* V int select = rd1.nextInt(goodNumber);
. C) M. @: x7 D" S O potentialParterner = potenAgent[select];2 T. x. Z$ P3 c- A
value = true;" x; y3 [) ~: H7 \
}
+ y2 C( D5 h, ^: Z return value;" Y' Q* u1 `7 u$ T) @+ U
}9 f4 b; ?# P2 A, f$ Z- l# ~
始终只能打印出XXXXXXXXXXXXXXXXXXXX,请各位帮帮忙。 |
|