|
5仿真币
最近做流行病模型,需要在一个网格里面放多个Agent,我查了一下API,使用OrderedMultiGrid类来构造,里面提供了一些putObjectAt(int, int, index);之类的东西。似乎可以用。但是当我编程调试的时候发现在同一位置只能获取一个对象。这是很令人纳闷的事情。我想问一下Repast有提供什么好方法处理吗,不仅要能存进去,还要能方便的拿出来。
$ L! r' b: f% U \ private boolean findPotentialPartner(){
9 l# R& `3 w9 ?' J+ S0 y boolean value = false;- \+ O: [: _4 c* f9 N
+ v) g% x& u5 H7 b6 ]& G OrderedMulti2DGrid grid = space.getCurrentAgentSpace();
P4 E7 }. o9 U8 U( u& [ n Iterator iterator = grid.getIteratorAt(x, y);
j5 k, {5 Q% e5 a4 I4 K! y3 X8 a& n; m SexAgent ag1 = null;
! k# m* \5 l7 h: _4 s+ R& h SexAgent [] potenAgent = new SexAgent[20];; X/ Z S; `& V7 m7 ~
int goodNumber = 0;
; \2 q% h! p+ {6 @5 c5 |2 P1 o& Z. k while(iterator.hasNext()){
$ u" ^3 H0 r4 u7 q( h3 I0 | System.out.println("XXXXXXXXXXXXXXXXXXXXX");. F( g# y5 f0 g; t; x
ag1 = (SexAgent)iterator.next();
2 s! Q( s9 |; d6 h, t5 r if((ag1.sex == FEMALE)
) U& E1 u; l+ N' z" ] &&(!ag1.isCoupled())){* r/ s6 u! `" W# L. M% a
System.out.println("YYYYYYYYYYYYYYYYYYYY");
- p9 b# |& o2 H5 i' e potenAgent[goodNumber] = ag1;
8 w1 t. q8 y! K! J/ m goodNumber ++;
1 z9 q2 ^. g, Y6 r! y( A } ^' W* G; Z9 w9 J* C
}
: d) a, l! R) w# [# B- o6 _: G5 P8 y- V+ ~$ z
# j: j" w- l$ e) S if(goodNumber >0){* Z6 [* {5 m* Z; I6 G8 M
System.out.println("ZZZZZZZZZZZZZZZZZZZZZZZZZZZZ"); " |8 K7 E- I2 N
Random rd1 = new Random();9 w2 v2 A$ M% t
int select = rd1.nextInt(goodNumber);
_* v4 w+ O8 u% t. ~) ]7 Z, h- V potentialParterner = potenAgent[select];7 Q4 |$ v f# m% \& ~
value = true;" q U) i7 e/ U& E
}
0 D2 L- U$ s" ?9 }1 I8 f4 C- `1 d* Y1 d2 D return value;& V5 Q; z! T+ w' {
}
4 J' ?4 c) n1 h+ G0 }* b始终只能打印出XXXXXXXXXXXXXXXXXXXX,请各位帮帮忙。 |
|