|
5仿真币
最近做流行病模型,需要在一个网格里面放多个Agent,我查了一下API,使用OrderedMultiGrid类来构造,里面提供了一些putObjectAt(int, int, index);之类的东西。似乎可以用。但是当我编程调试的时候发现在同一位置只能获取一个对象。这是很令人纳闷的事情。我想问一下Repast有提供什么好方法处理吗,不仅要能存进去,还要能方便的拿出来。
1 H7 ^, t# J" M7 [ private boolean findPotentialPartner(){
+ {$ L7 j- f/ t8 \ boolean value = false;$ b9 W- S( D/ `& ?) N
: Y2 M, C5 l/ e% e: Z" V; x
OrderedMulti2DGrid grid = space.getCurrentAgentSpace();( J2 j5 M4 {: r; D! c
Iterator iterator = grid.getIteratorAt(x, y);
8 J0 q; q' s: `; U, i' p* d/ h SexAgent ag1 = null;
& Z+ d' E+ i0 h/ p8 D) _0 { SexAgent [] potenAgent = new SexAgent[20];
4 }9 o7 K# h! J9 K1 m* W' J& `1 f int goodNumber = 0;9 M Q/ C7 b. h# Q9 T
while(iterator.hasNext()){2 Q/ ]2 a3 g' _. c0 f$ O7 P# e
System.out.println("XXXXXXXXXXXXXXXXXXXXX");
3 b5 g0 ]; R$ A9 `% W: Z* ? ag1 = (SexAgent)iterator.next();
. ^0 s0 ^2 @4 Q3 x' U. W if((ag1.sex == FEMALE) ' F: Z4 i+ p0 Q) {, n
&&(!ag1.isCoupled())){
! c* K2 \1 p9 ^- a' v System.out.println("YYYYYYYYYYYYYYYYYYYY");/ X0 f. o& _: k; K2 v
potenAgent[goodNumber] = ag1;
5 U6 \! A" Y' A goodNumber ++;
/ q# X+ c9 O% ^! N v }( [. `8 q" ?! Z5 I6 H" R
}' w- o# ^- v7 M9 P0 O4 m
. i$ M# F/ \+ n! C* l if(goodNumber >0){$ I/ n+ Q" G' j* g; v
System.out.println("ZZZZZZZZZZZZZZZZZZZZZZZZZZZZ"); 1 `% I/ b: [( e, G& Q7 ?2 p
Random rd1 = new Random();- a n/ d5 f$ f! W5 S! h
int select = rd1.nextInt(goodNumber);
3 |5 @& ]4 v) U( J k4 l" s potentialParterner = potenAgent[select];2 @. v9 e: T! P5 j) Y+ G8 v
value = true;
5 U% p6 t' j; d' h }. D) |! a, O) i" n8 h
return value;3 }3 t+ E/ Q/ |
}, v7 z4 N: }* N: m5 v! }) q6 w$ r0 w4 g
始终只能打印出XXXXXXXXXXXXXXXXXXXX,请各位帮帮忙。 |
|