|
|
5仿真币
最近做流行病模型,需要在一个网格里面放多个Agent,我查了一下API,使用OrderedMultiGrid类来构造,里面提供了一些putObjectAt(int, int, index);之类的东西。似乎可以用。但是当我编程调试的时候发现在同一位置只能获取一个对象。这是很令人纳闷的事情。我想问一下Repast有提供什么好方法处理吗,不仅要能存进去,还要能方便的拿出来。
( e3 I' F, |+ t* g: x v. q" d private boolean findPotentialPartner(){" n- _, h+ p. r
boolean value = false;$ I5 t( \! U2 \% H$ G
+ G( t+ Y; e# C K
OrderedMulti2DGrid grid = space.getCurrentAgentSpace();( @* x8 L) q- |9 O# ?
Iterator iterator = grid.getIteratorAt(x, y);- Z" r. H/ O; }- c$ K
SexAgent ag1 = null; 6 i. x0 E) Z- w0 @
SexAgent [] potenAgent = new SexAgent[20];
* |1 g- d E5 ?6 x) h int goodNumber = 0;2 }5 x8 v. k2 Y' u1 U& Z! l8 G
while(iterator.hasNext()){
7 ^9 t9 ] h( v System.out.println("XXXXXXXXXXXXXXXXXXXXX");1 l# ?. W9 } z& u0 Q
ag1 = (SexAgent)iterator.next();
8 [! c/ {% {1 Z0 x5 @; [! q if((ag1.sex == FEMALE)
: [9 f2 L% A) q8 g &&(!ag1.isCoupled())){
& a* W1 @9 ?* I System.out.println("YYYYYYYYYYYYYYYYYYYY");
; A: [. V4 Q; K4 v( N potenAgent[goodNumber] = ag1;4 T" `, `2 B! E g2 X
goodNumber ++;
% ]) }3 S" r$ r! F" ] }
# [* T% X3 M1 E% f0 D' y+ l }
) E+ x! t, l Y4 W( ` & i, Q5 c; t, O- v
if(goodNumber >0){6 I& d9 A3 M; H" L( w# ]7 p. f
System.out.println("ZZZZZZZZZZZZZZZZZZZZZZZZZZZZ");
2 v* q2 G7 ^+ W+ B( U Random rd1 = new Random();
2 I- g4 z9 X3 s8 N5 R7 N int select = rd1.nextInt(goodNumber);
1 u1 t4 w! ~! d( S$ U+ P potentialParterner = potenAgent[select];
$ g' u; Z- R3 j5 o value = true;' p3 X2 J: @( a v/ d2 {) D0 B5 h
}
' u: e8 p$ o t C4 [ return value;
9 P6 `; p& C6 w, @ }
2 x$ T0 j( ^2 G! F! C/ t" a( ] T始终只能打印出XXXXXXXXXXXXXXXXXXXX,请各位帮帮忙。 |
|