|
|
5仿真币
最近做流行病模型,需要在一个网格里面放多个Agent,我查了一下API,使用OrderedMultiGrid类来构造,里面提供了一些putObjectAt(int, int, index);之类的东西。似乎可以用。但是当我编程调试的时候发现在同一位置只能获取一个对象。这是很令人纳闷的事情。我想问一下Repast有提供什么好方法处理吗,不仅要能存进去,还要能方便的拿出来。
* E. n2 t0 n5 O5 R# i private boolean findPotentialPartner(){; \& q4 \1 v3 o8 b e
boolean value = false;
1 R' A K: u( w' v9 ~ 3 T& [ C8 h! h
OrderedMulti2DGrid grid = space.getCurrentAgentSpace();) {" i; ?8 k* I5 M4 ^. h" p& F
Iterator iterator = grid.getIteratorAt(x, y);
: v) j# Z8 g, q& C; t SexAgent ag1 = null; 1 _. f) C9 r" w$ C/ r3 U% s
SexAgent [] potenAgent = new SexAgent[20];. |& C1 q) |- \& I, X/ W3 [
int goodNumber = 0;! X* x6 m% H2 G4 [: x& J
while(iterator.hasNext()){
8 p2 ?* H4 g! e' A X& p, m System.out.println("XXXXXXXXXXXXXXXXXXXXX");( C) d2 x. a+ t" i- {
ag1 = (SexAgent)iterator.next();# c* u1 ~" D$ k# J E1 R
if((ag1.sex == FEMALE) # d3 L2 M+ H5 v- x# B4 q
&&(!ag1.isCoupled())){( s' ]0 L8 D# h
System.out.println("YYYYYYYYYYYYYYYYYYYY");
8 P$ `+ U( t! g9 a2 H% @0 `) p potenAgent[goodNumber] = ag1;0 c f; c; q/ ]9 f4 O5 C1 r+ C, x
goodNumber ++;
( |1 g0 y Y0 R# t# S9 ]) W. x" x$ } }
5 l1 O: c5 V. K9 a6 v- m& } }
4 z$ c6 s' n& H3 b2 i/ K + F; Q, I+ M0 t* N% H5 P
if(goodNumber >0){
2 J, @8 L, D: u' O System.out.println("ZZZZZZZZZZZZZZZZZZZZZZZZZZZZ"); , |' j5 U( s: E. Y
Random rd1 = new Random();$ h9 ~* E, a) L* @: _
int select = rd1.nextInt(goodNumber);
6 f4 |$ |% T3 d* x/ t( a potentialParterner = potenAgent[select];1 p I: u- m0 u. r: U/ A- Q. ~8 g
value = true;
* w& j* R4 |1 L+ [; G# P9 B5 j }
5 F/ _1 i6 R {& p' C- K return value;
) l; \5 Q, }5 S( w }
8 |' S. e/ Z9 \- j1 y# x9 |* V始终只能打印出XXXXXXXXXXXXXXXXXXXX,请各位帮帮忙。 |
|