|
5仿真币
最近做流行病模型,需要在一个网格里面放多个Agent,我查了一下API,使用OrderedMultiGrid类来构造,里面提供了一些putObjectAt(int, int, index);之类的东西。似乎可以用。但是当我编程调试的时候发现在同一位置只能获取一个对象。这是很令人纳闷的事情。我想问一下Repast有提供什么好方法处理吗,不仅要能存进去,还要能方便的拿出来。
( g$ s7 {/ B- k- S6 b' C private boolean findPotentialPartner(){# Q% V+ t: z8 F2 N) b
boolean value = false;
z% F/ j- `0 U3 l+ ^. U4 h
5 ?/ V( h, g3 l6 N1 D- | OrderedMulti2DGrid grid = space.getCurrentAgentSpace();
4 K6 \& k e" N0 G8 v2 Q Iterator iterator = grid.getIteratorAt(x, y);
" ~9 h" s N, I SexAgent ag1 = null; 2 g( W0 f$ ]0 F! p/ ]4 q" M- O9 ]8 s
SexAgent [] potenAgent = new SexAgent[20];" `- |: v- }; Y0 ?/ j L1 U
int goodNumber = 0;
5 T) D0 E/ [0 Y while(iterator.hasNext()){
7 x7 g5 u$ \3 q/ J System.out.println("XXXXXXXXXXXXXXXXXXXXX");* d: l- R( B( s! }' \: p1 J
ag1 = (SexAgent)iterator.next();) N3 E$ ?2 h: w/ O! ]
if((ag1.sex == FEMALE)
% S0 m0 W4 L$ H& \ &&(!ag1.isCoupled())){8 y1 ]) ]$ q" `# w
System.out.println("YYYYYYYYYYYYYYYYYYYY");
- d5 S. _ g- ]* F" B& l+ ^ potenAgent[goodNumber] = ag1;
. s# u" f9 P/ ^: p/ }% g: l4 b goodNumber ++;0 {% z" P) u. W* a. m
}/ j: j2 L+ d& R
}! G: R/ S! z/ C! v5 y7 E/ i6 m
- Z4 Q# T: S" j6 k- H if(goodNumber >0){9 i+ a. `, Y) Q
System.out.println("ZZZZZZZZZZZZZZZZZZZZZZZZZZZZ"); ' k) x2 H( O7 x1 G/ E
Random rd1 = new Random();. ]9 c1 y, w5 x' s8 k9 f
int select = rd1.nextInt(goodNumber);
: q' `, B' ]9 D7 S' w potentialParterner = potenAgent[select];
9 e5 Y. k: ^ {' s value = true;
. t" C, \6 N# P- w! B }0 J2 e; R l. M/ s) o8 X# G) Q; F( |
return value;1 b4 f8 Z3 f3 k
}
/ o* [" z4 K' j3 @始终只能打印出XXXXXXXXXXXXXXXXXXXX,请各位帮帮忙。 |
|