|
5仿真币
最近做流行病模型,需要在一个网格里面放多个Agent,我查了一下API,使用OrderedMultiGrid类来构造,里面提供了一些putObjectAt(int, int, index);之类的东西。似乎可以用。但是当我编程调试的时候发现在同一位置只能获取一个对象。这是很令人纳闷的事情。我想问一下Repast有提供什么好方法处理吗,不仅要能存进去,还要能方便的拿出来。# b, q5 ?* R- N: g3 x4 V6 M
private boolean findPotentialPartner(){
' E+ m6 O; z0 G) B0 o7 t boolean value = false;# f+ ]" I# a2 d- r, w
1 T8 N7 J: Y% ?9 f$ c: l
OrderedMulti2DGrid grid = space.getCurrentAgentSpace();: u# p; R: [' x' D
Iterator iterator = grid.getIteratorAt(x, y);
" m$ s# O; @+ c0 r SexAgent ag1 = null; * ~* G0 K# ~ B b G% c
SexAgent [] potenAgent = new SexAgent[20];# p3 y3 O# j* C' G6 R" O
int goodNumber = 0;: E2 V& q1 h+ Q! b
while(iterator.hasNext()){$ `" P( i1 |5 ^( i) o& ]
System.out.println("XXXXXXXXXXXXXXXXXXXXX");0 x3 z9 z0 w: c+ q7 f
ag1 = (SexAgent)iterator.next();& i8 D" K0 H# x5 z: n# y
if((ag1.sex == FEMALE)
6 S/ _. Q) A; f. `; l &&(!ag1.isCoupled())){
9 d5 k5 ]$ w& A% }3 |$ n System.out.println("YYYYYYYYYYYYYYYYYYYY");- @9 l; w; X3 ?! Q2 F
potenAgent[goodNumber] = ag1;
6 v" ], k6 s- ]+ j m goodNumber ++;: F: ?, P z) F( [6 t
}
4 Z: A3 @; x0 D }1 j [6 s/ T0 \" ?# R% y% t( d
$ A2 A6 L% v1 r2 h
if(goodNumber >0){, E% h% m. e, O
System.out.println("ZZZZZZZZZZZZZZZZZZZZZZZZZZZZ");
: v+ s% @' f5 } Random rd1 = new Random();* C, Q- r) S* ~: `$ Q
int select = rd1.nextInt(goodNumber);* P) i7 d6 m( i& `. f5 i
potentialParterner = potenAgent[select];# }: S4 L6 x$ |$ m) h" X
value = true;; }6 _/ w7 U5 q0 ]/ i
}
5 G8 M8 W( c5 } return value;
9 {$ I7 A; B! _( u2 D P7 A1 h }
& J a4 B* a Z, {* z# R始终只能打印出XXXXXXXXXXXXXXXXXXXX,请各位帮帮忙。 |
|