|
|
5仿真币
最近做流行病模型,需要在一个网格里面放多个Agent,我查了一下API,使用OrderedMultiGrid类来构造,里面提供了一些putObjectAt(int, int, index);之类的东西。似乎可以用。但是当我编程调试的时候发现在同一位置只能获取一个对象。这是很令人纳闷的事情。我想问一下Repast有提供什么好方法处理吗,不仅要能存进去,还要能方便的拿出来。' x! w$ T- i. W
private boolean findPotentialPartner(){
4 c4 k r8 J& T4 i1 _( W; y boolean value = false;
4 L, S! E% u% N9 N' O # }( b7 M0 h) `9 a, ~' V5 d" d `+ [% H
OrderedMulti2DGrid grid = space.getCurrentAgentSpace();
& M1 `& G" i1 A \. k* j Iterator iterator = grid.getIteratorAt(x, y);
& q# S- {3 n6 s$ ] SexAgent ag1 = null;
. r( Y/ ?/ g% n# M7 d0 e. L SexAgent [] potenAgent = new SexAgent[20];# L7 d3 S6 r4 e9 u4 `& W
int goodNumber = 0;
' @2 E' w5 o1 n; I, C8 @" N( N while(iterator.hasNext()){
4 f: _( l- f* [* Z( C System.out.println("XXXXXXXXXXXXXXXXXXXXX");
: Z; C) ?+ l; Z! g ag1 = (SexAgent)iterator.next();
( n8 V; y' x, c- A! S. \ if((ag1.sex == FEMALE)
& R0 H# F4 G. a9 O: |8 I &&(!ag1.isCoupled())){
8 [& l! n) b V+ D: |9 J System.out.println("YYYYYYYYYYYYYYYYYYYY");8 m+ x% ~; |' Z
potenAgent[goodNumber] = ag1;" w+ x; T7 I$ n
goodNumber ++;
1 {7 ]: b+ Y, ]1 M4 S9 _/ O# r& f# } }
# g* j5 {# X& c& u }
4 X" t2 y- d& H- q1 W7 f
& B7 P. ?+ x! a# @ if(goodNumber >0){$ Z6 J: Y w. M! v. U" ]4 X( }
System.out.println("ZZZZZZZZZZZZZZZZZZZZZZZZZZZZ"); - I+ C" F- w8 X2 g( ]$ ?
Random rd1 = new Random();
5 s$ N& g% a8 I" y1 }! `3 C0 U9 [ int select = rd1.nextInt(goodNumber);
1 |8 p' c5 U$ }* ^5 @& Q potentialParterner = potenAgent[select];& J S+ y/ B1 @5 Q; a6 f3 v7 B G
value = true;4 R1 R: d! g" g1 N) z
}
. c2 E4 u$ k4 Y. K7 j; E return value;
% m; O; U8 r. }- | }
# z: ?4 q; N6 y始终只能打印出XXXXXXXXXXXXXXXXXXXX,请各位帮帮忙。 |
|