|
5仿真币
最近做流行病模型,需要在一个网格里面放多个Agent,我查了一下API,使用OrderedMultiGrid类来构造,里面提供了一些putObjectAt(int, int, index);之类的东西。似乎可以用。但是当我编程调试的时候发现在同一位置只能获取一个对象。这是很令人纳闷的事情。我想问一下Repast有提供什么好方法处理吗,不仅要能存进去,还要能方便的拿出来。- u2 P5 [" F! g7 y6 C
private boolean findPotentialPartner(){
2 b( N g# S8 {7 A5 s4 k+ g) M- ? boolean value = false;' |8 \; R! E- o! z/ P$ Q
( a0 S8 k$ P! B7 ^! S e
OrderedMulti2DGrid grid = space.getCurrentAgentSpace();
c; n. ^9 @: B" N: u Iterator iterator = grid.getIteratorAt(x, y);
8 Q3 T% ?0 T: h9 a# [+ k SexAgent ag1 = null;
0 q7 a9 v1 D- G- l4 R/ q SexAgent [] potenAgent = new SexAgent[20];' m# N4 V* E2 @ C& m; F
int goodNumber = 0;
' G* u5 c: K/ n! v& L( l7 Q while(iterator.hasNext()){
. F4 _3 M( @" n& O9 T y* K System.out.println("XXXXXXXXXXXXXXXXXXXXX");
% ]1 C9 {7 F( T9 O2 ~% ?' I ag1 = (SexAgent)iterator.next();% M G) X5 E+ D6 H4 Z4 A
if((ag1.sex == FEMALE)
# c. w) x3 W5 u! ]2 z% C8 C &&(!ag1.isCoupled())){
, `7 V# S2 e# ]/ {+ ^: E+ B n8 \ System.out.println("YYYYYYYYYYYYYYYYYYYY");: v3 V4 G0 d2 }) M
potenAgent[goodNumber] = ag1;
( [- L+ X/ p I: h# ~3 n goodNumber ++;
$ f* X8 W X2 ]; ^* \ Y j: b }
0 ^8 {+ T, l2 w. x+ d; Z, ` }; \3 T8 H) R. @1 w
) x/ N+ F0 e6 p- ^+ K
if(goodNumber >0){
9 m5 m. N5 s9 [) i System.out.println("ZZZZZZZZZZZZZZZZZZZZZZZZZZZZ"); 9 B h' A& a2 O
Random rd1 = new Random();9 p+ z; z6 Q' Q! ~
int select = rd1.nextInt(goodNumber);
/ y8 A- O; \, G c- W potentialParterner = potenAgent[select];
- r7 v! P8 `7 V3 x' x' ^" J6 \ value = true;7 T+ S5 w6 t# h' G" h1 H1 {
}
8 Y% `: i; B5 J return value;/ ?5 Y, g0 y7 R% ~) R* r' n4 U
}
, }% @8 N8 i$ X" G+ O' p0 [% k1 x9 [6 T始终只能打印出XXXXXXXXXXXXXXXXXXXX,请各位帮帮忙。 |
|