|
|
5仿真币
最近做流行病模型,需要在一个网格里面放多个Agent,我查了一下API,使用OrderedMultiGrid类来构造,里面提供了一些putObjectAt(int, int, index);之类的东西。似乎可以用。但是当我编程调试的时候发现在同一位置只能获取一个对象。这是很令人纳闷的事情。我想问一下Repast有提供什么好方法处理吗,不仅要能存进去,还要能方便的拿出来。
) B J, F: z! B* B" i private boolean findPotentialPartner(){, m5 x3 x! g" {3 w
boolean value = false;
% I+ k0 ?2 o& w" D
: j ?" [7 X+ z4 H; b OrderedMulti2DGrid grid = space.getCurrentAgentSpace();
! O, Y( l# v0 x Iterator iterator = grid.getIteratorAt(x, y);% \+ A1 l, c7 V5 K0 w
SexAgent ag1 = null;
5 \1 |0 K- |- t5 ?; `' v/ L SexAgent [] potenAgent = new SexAgent[20];
1 N& l9 A" g: j% Y4 ?8 y int goodNumber = 0;
2 x7 b& [0 V: v! z5 p while(iterator.hasNext()){
' V0 h3 s, h1 y$ _- h System.out.println("XXXXXXXXXXXXXXXXXXXXX");
1 L [3 P+ F, ~/ L1 x6 c ag1 = (SexAgent)iterator.next();. o% w" _) O7 A `8 o+ n8 X
if((ag1.sex == FEMALE)
3 c" J3 z0 B. T' ^1 g. d &&(!ag1.isCoupled())){
! ?# Q8 ~7 i: s1 Z7 { _- F/ h System.out.println("YYYYYYYYYYYYYYYYYYYY");
7 k. `+ v7 w3 h; t: `# W* T4 [ potenAgent[goodNumber] = ag1;5 p( c" `+ {7 Y
goodNumber ++;( o' p1 C" \# A% R. y
}7 W: g. Y+ R& O R" G! m/ Y% C9 V
}
1 d$ Q( L% \, {$ F1 p; A6 k# Y , d/ R( I0 x$ t( ?. a
if(goodNumber >0){
% V+ d) _& [+ n/ v" S" Y2 k; n' L# o System.out.println("ZZZZZZZZZZZZZZZZZZZZZZZZZZZZ");
% {/ u* e. E* r+ |/ Y% I' I8 | Random rd1 = new Random();6 z/ {8 G! f0 a' T; L& {
int select = rd1.nextInt(goodNumber);. w7 w* I2 j3 E# a
potentialParterner = potenAgent[select];5 J; T4 z* ^8 p8 i/ p
value = true;& X% |8 e3 A$ F! R% |6 z1 H
}* [: ?7 x4 K" E6 A: {' @4 R( c
return value;0 S9 h- Y9 `* r3 E
}* m7 X( b& M" P6 ]; ^+ C( _
始终只能打印出XXXXXXXXXXXXXXXXXXXX,请各位帮帮忙。 |
|