|
|
5仿真币
最近做流行病模型,需要在一个网格里面放多个Agent,我查了一下API,使用OrderedMultiGrid类来构造,里面提供了一些putObjectAt(int, int, index);之类的东西。似乎可以用。但是当我编程调试的时候发现在同一位置只能获取一个对象。这是很令人纳闷的事情。我想问一下Repast有提供什么好方法处理吗,不仅要能存进去,还要能方便的拿出来。
5 y$ D0 c7 l$ Z# F7 ^ B5 y private boolean findPotentialPartner(){
/ T9 W5 l/ m: R- B# a boolean value = false;
0 E7 J8 }( f- v& x8 D2 x9 t: _
6 i! N5 F4 M1 m1 j5 T7 D OrderedMulti2DGrid grid = space.getCurrentAgentSpace();! g/ t+ H/ r/ n9 q, c# P8 r
Iterator iterator = grid.getIteratorAt(x, y);
: b9 v Q1 B9 {3 p" @' ]3 s SexAgent ag1 = null; $ N* F" q) z- H$ r) w8 I* Y" n
SexAgent [] potenAgent = new SexAgent[20];
1 ]0 C/ `( o6 E+ _8 Y int goodNumber = 0;
% z" {' a$ r1 l* d. a while(iterator.hasNext()){+ M2 P; J+ ?8 s+ P/ J! R9 Z( _4 y
System.out.println("XXXXXXXXXXXXXXXXXXXXX");$ p- ^* T, S- C6 v
ag1 = (SexAgent)iterator.next();
. J; C% b: m4 U0 Q% z if((ag1.sex == FEMALE) $ r8 i+ o, U; K
&&(!ag1.isCoupled())){* M/ ` B0 h4 g
System.out.println("YYYYYYYYYYYYYYYYYYYY");2 G7 r, @, p1 Q" t/ R# r
potenAgent[goodNumber] = ag1;
9 t6 n3 J( y8 X8 ]0 P goodNumber ++;
0 R- y( s* c4 v( ] R. [- F- s }
( L8 e* f$ @- s }
^3 h# n" l# V" u & X% H6 p* _) d
if(goodNumber >0){
9 L8 ^5 U1 f& `$ T$ R( ~ System.out.println("ZZZZZZZZZZZZZZZZZZZZZZZZZZZZ");
2 \1 m+ f G8 R9 }0 Y5 G2 k Random rd1 = new Random();
0 E6 B; Z; k; b( v1 L4 I int select = rd1.nextInt(goodNumber);
6 G9 @7 I, }1 S2 y potentialParterner = potenAgent[select];* v4 s9 ~ f: ?; F# }
value = true;# ~1 I7 {* e' ]; y% F
}
8 d6 q) P |0 @) | return value;) ~; m% b! L# B1 f2 I0 y+ V/ _& n
}9 e7 [! ? g" C% R. ^1 [ B
始终只能打印出XXXXXXXXXXXXXXXXXXXX,请各位帮帮忙。 |
|