|
|
5仿真币
最近做流行病模型,需要在一个网格里面放多个Agent,我查了一下API,使用OrderedMultiGrid类来构造,里面提供了一些putObjectAt(int, int, index);之类的东西。似乎可以用。但是当我编程调试的时候发现在同一位置只能获取一个对象。这是很令人纳闷的事情。我想问一下Repast有提供什么好方法处理吗,不仅要能存进去,还要能方便的拿出来。
+ D& u" p* y0 l) ~ private boolean findPotentialPartner(){% w& R& c8 Z; ?9 V% K) l2 N0 T
boolean value = false;7 b7 ?9 q, }3 f! n* @- }
! Z W5 x+ O; x8 q5 c. v h
OrderedMulti2DGrid grid = space.getCurrentAgentSpace();6 z" b) y! C& d5 a/ }1 X
Iterator iterator = grid.getIteratorAt(x, y);0 ?; `/ C/ l I5 F
SexAgent ag1 = null; 2 O9 M- G+ z4 K& |2 i
SexAgent [] potenAgent = new SexAgent[20];) `4 O% s: H* t$ p
int goodNumber = 0;) Z% S/ ?' z: p5 V2 w. z* H5 u! V: y: s# b* g
while(iterator.hasNext()){
: n- h) Q: R) E k/ j+ T System.out.println("XXXXXXXXXXXXXXXXXXXXX");
( J0 b$ o, z* }: B ag1 = (SexAgent)iterator.next();( X9 T2 g2 z0 e/ v3 E c) Q$ s
if((ag1.sex == FEMALE)
- O& _3 ?: Z1 d5 D& |, } &&(!ag1.isCoupled())){
/ _4 k) A; m& M5 P: E$ z System.out.println("YYYYYYYYYYYYYYYYYYYY");
1 C: O0 h, f* l( u' R" j4 i potenAgent[goodNumber] = ag1;
" c6 V! ^# B; I goodNumber ++;
% b2 ?$ P: n/ A }
$ r( p7 Z7 A9 S' v) v/ }5 S }0 i! a' A; Y. ~& N
$ H& V* X: s4 r& I- b1 M; w { if(goodNumber >0){
% c6 w8 D2 r( ?0 ?# J0 s System.out.println("ZZZZZZZZZZZZZZZZZZZZZZZZZZZZ");
6 R: x; c& l/ u; v* _ Random rd1 = new Random();
% I$ F+ W8 @' T, J3 N% M int select = rd1.nextInt(goodNumber);
' R; u2 I: H- o) G/ s5 k potentialParterner = potenAgent[select];
0 Y8 E" U5 p, n value = true;
: ^4 q8 U W; X7 O% P/ P2 b& x }
5 J$ x+ c* |5 z return value;( M/ ~9 `9 y7 b: y
}
. d/ k7 ?4 O% Z4 y N/ b8 u始终只能打印出XXXXXXXXXXXXXXXXXXXX,请各位帮帮忙。 |
|