|
|
5仿真币
最近做流行病模型,需要在一个网格里面放多个Agent,我查了一下API,使用OrderedMultiGrid类来构造,里面提供了一些putObjectAt(int, int, index);之类的东西。似乎可以用。但是当我编程调试的时候发现在同一位置只能获取一个对象。这是很令人纳闷的事情。我想问一下Repast有提供什么好方法处理吗,不仅要能存进去,还要能方便的拿出来。! [. H: Q8 ^1 V; H' t& ?9 B) v. y! l
private boolean findPotentialPartner(){+ `: V+ ^. m- ?( u& x+ V8 S
boolean value = false;
7 a: Z7 v/ J9 v$ @
% `/ h8 m4 X+ Z9 f: h( s OrderedMulti2DGrid grid = space.getCurrentAgentSpace();
1 |! z( B* A2 ~, B4 }* } Iterator iterator = grid.getIteratorAt(x, y);
& j) }' p* x4 z9 P! c* |; H/ Q* K SexAgent ag1 = null; 9 i, D$ C! B8 t8 E% U4 k; N
SexAgent [] potenAgent = new SexAgent[20];
" v/ A8 {+ C( }& Q" W2 Y) Q int goodNumber = 0;
: @# [6 r/ ]* P while(iterator.hasNext()){
6 {# a' f- z2 y2 r1 C0 T/ V System.out.println("XXXXXXXXXXXXXXXXXXXXX");
( n5 P3 }, }8 Q5 j3 e ag1 = (SexAgent)iterator.next();
y0 _. o, j7 [4 q, J3 O if((ag1.sex == FEMALE)
/ ` D w# u; D s; n) {2 ]6 | &&(!ag1.isCoupled())){" h; w; M e5 K H' e# j7 K4 w" X4 A
System.out.println("YYYYYYYYYYYYYYYYYYYY");
& u4 X# K9 `% U4 P* `) ` potenAgent[goodNumber] = ag1;) I$ ^ b7 c2 C0 v2 @ l$ Z
goodNumber ++;; `& T) O7 L) j) P
}5 ?4 `9 C$ T1 A) `
}
7 ]) w5 l- {, K8 E( u+ S# J; q" c $ u. e( B! @+ G' _6 {7 U
if(goodNumber >0){% l( ~2 _3 f( `
System.out.println("ZZZZZZZZZZZZZZZZZZZZZZZZZZZZ");
+ r7 w+ h, _" W) Q' ~ Random rd1 = new Random();: V* q8 C3 ~# N9 L; {* A
int select = rd1.nextInt(goodNumber);3 |0 E" V6 M6 |& W% y( v
potentialParterner = potenAgent[select];
& j% f# k9 x2 p X: C value = true;
# B1 |5 ~% w5 J }
8 i. j* |& F7 ?; g/ X3 G6 s7 w! D! L return value;; J3 ]5 [% z% V. V, T6 ~2 [ ]1 a$ g* s
}
, x( l+ b2 l# J- [0 J- m6 z始终只能打印出XXXXXXXXXXXXXXXXXXXX,请各位帮帮忙。 |
|