|
|
5仿真币
最近做流行病模型,需要在一个网格里面放多个Agent,我查了一下API,使用OrderedMultiGrid类来构造,里面提供了一些putObjectAt(int, int, index);之类的东西。似乎可以用。但是当我编程调试的时候发现在同一位置只能获取一个对象。这是很令人纳闷的事情。我想问一下Repast有提供什么好方法处理吗,不仅要能存进去,还要能方便的拿出来。
8 P& f, d8 \* k; X% S z private boolean findPotentialPartner(){" X6 v: u+ Z7 W
boolean value = false;
8 s/ S+ J0 i9 J; X9 Q / P; y5 R. H6 {2 `0 w& d
OrderedMulti2DGrid grid = space.getCurrentAgentSpace();+ M! n$ r, J& C9 H2 \$ q) V
Iterator iterator = grid.getIteratorAt(x, y);
2 C n& f9 a, ^% ?& n- O0 m$ ^( M SexAgent ag1 = null; . B3 E! A# m( L4 T# @0 U1 s" y( h
SexAgent [] potenAgent = new SexAgent[20];1 g5 i3 }* A: i3 U# E3 o0 i
int goodNumber = 0;3 H' A _- A. e) ^8 _3 R2 T; t( q
while(iterator.hasNext()){$ e. n, `, W$ X9 {& [9 v% t8 V; @
System.out.println("XXXXXXXXXXXXXXXXXXXXX");$ W4 N! s& @5 a; J* L$ Z5 m, q. X
ag1 = (SexAgent)iterator.next();
* l) X% `8 c" |5 ^/ I# u- d. O if((ag1.sex == FEMALE) ( d5 [- ~" g, F) `$ e
&&(!ag1.isCoupled())){3 ]6 a W4 s: a
System.out.println("YYYYYYYYYYYYYYYYYYYY");% N( V- j$ P) |- o
potenAgent[goodNumber] = ag1;
4 j8 f7 K: x0 y+ C' N* ~ goodNumber ++;& d$ H4 ~# H, q; o: ~7 r, X
}; S7 f6 a4 v9 b8 {( c& { W0 b5 d' I
}
8 |- z3 k" ^$ h F. b/ R : f0 {% E' o i q$ `
if(goodNumber >0){5 Z% Z3 v" S0 C- u0 A; T9 E$ u
System.out.println("ZZZZZZZZZZZZZZZZZZZZZZZZZZZZ");
' m b( [5 j h6 F Random rd1 = new Random();' g! h4 q8 q' K
int select = rd1.nextInt(goodNumber);
& O2 X' Z A, F* t potentialParterner = potenAgent[select]; e+ t! _3 C4 |, m+ _
value = true;
/ t6 u/ {& g I1 u0 y# k. P8 \ }& I6 J" c: m& a3 p9 v" p
return value;
# @8 L; V2 g6 b }8 Z, g7 L! x: \" D; a% M d, n
始终只能打印出XXXXXXXXXXXXXXXXXXXX,请各位帮帮忙。 |
|