|
|
5仿真币
最近做流行病模型,需要在一个网格里面放多个Agent,我查了一下API,使用OrderedMultiGrid类来构造,里面提供了一些putObjectAt(int, int, index);之类的东西。似乎可以用。但是当我编程调试的时候发现在同一位置只能获取一个对象。这是很令人纳闷的事情。我想问一下Repast有提供什么好方法处理吗,不仅要能存进去,还要能方便的拿出来。( S7 |; t: [6 Z' P/ @
private boolean findPotentialPartner(){
! R6 T% x4 l5 P# X boolean value = false;
0 I7 p7 _2 E# ?, b" G ( R: u# {$ {+ U* s7 e
OrderedMulti2DGrid grid = space.getCurrentAgentSpace();1 f! m6 ~3 x' c$ |) e. q' v
Iterator iterator = grid.getIteratorAt(x, y);
5 O6 h1 b" A( z9 W& `4 D SexAgent ag1 = null; 2 s9 K" x7 }2 b' Q' _, \
SexAgent [] potenAgent = new SexAgent[20];
: t3 j l7 i& z! K0 G int goodNumber = 0;$ P( Z/ \3 x! b; x2 n# \
while(iterator.hasNext()){
. c" Y& [* S! ` System.out.println("XXXXXXXXXXXXXXXXXXXXX");& t5 f/ l$ y% }) N
ag1 = (SexAgent)iterator.next();2 D: _3 g7 X4 d0 |
if((ag1.sex == FEMALE)
7 e+ _: {6 \/ r" N( k &&(!ag1.isCoupled())){
8 H& r& {3 i! {. m System.out.println("YYYYYYYYYYYYYYYYYYYY");. y ^% Z4 p2 m: c0 f# B+ O: b& {
potenAgent[goodNumber] = ag1;
4 y+ K. c" q6 ^* K6 d1 } goodNumber ++;6 f$ i; ~8 j3 M+ o" u
}; J. _0 s- W. L* G W/ t
}8 B9 t$ R" Z' m& b9 A0 j, N
. }3 y2 u9 ]" t4 l$ H if(goodNumber >0){' [$ L6 g# X4 D1 z1 N6 G* U
System.out.println("ZZZZZZZZZZZZZZZZZZZZZZZZZZZZ");
" n+ Z( ^& w2 |/ b* f Random rd1 = new Random();7 P" O; a6 h: M4 P D& D
int select = rd1.nextInt(goodNumber);4 F2 W: O- Z3 @* _2 T7 ]4 \. R
potentialParterner = potenAgent[select];
2 `3 p" \; O; ~ value = true;
3 S1 l/ t! t, ?( j& I/ i3 E( w }4 F6 E @- }, k+ G. A
return value;. D, p5 B2 p. p* S% X( i# J: `4 z8 ]
}6 h/ h* f$ Q; ]) Y) F; y& ~) R
始终只能打印出XXXXXXXXXXXXXXXXXXXX,请各位帮帮忙。 |
|