|
|
5仿真币
最近做流行病模型,需要在一个网格里面放多个Agent,我查了一下API,使用OrderedMultiGrid类来构造,里面提供了一些putObjectAt(int, int, index);之类的东西。似乎可以用。但是当我编程调试的时候发现在同一位置只能获取一个对象。这是很令人纳闷的事情。我想问一下Repast有提供什么好方法处理吗,不仅要能存进去,还要能方便的拿出来。
7 p% w) z# n, \ private boolean findPotentialPartner(){& ~. j( F. U& w. a( X6 w3 b
boolean value = false;
7 v/ S+ D. h5 W) z
- B% I7 |9 C. {. H OrderedMulti2DGrid grid = space.getCurrentAgentSpace();
" d. O% l6 R8 {) }, m2 C& {, J Iterator iterator = grid.getIteratorAt(x, y);- a) h+ r+ ~3 ?7 |0 y0 {( T! R6 N
SexAgent ag1 = null;
* J0 ], p( y5 a SexAgent [] potenAgent = new SexAgent[20];* l, X: b0 Y) i$ _4 l V
int goodNumber = 0;
3 Y- Q( x' d! N while(iterator.hasNext()){9 Y. c+ h9 y: K$ i( v( l" s J
System.out.println("XXXXXXXXXXXXXXXXXXXXX");
" S# L% r4 r$ i- x7 D ag1 = (SexAgent)iterator.next();
3 G4 q8 X, ?8 e+ D | if((ag1.sex == FEMALE) ' M ?2 x% M3 R) g
&&(!ag1.isCoupled())){9 L2 L6 z! L* b4 D
System.out.println("YYYYYYYYYYYYYYYYYYYY");. s5 ^ H: _" ^3 l# t+ K
potenAgent[goodNumber] = ag1;7 {7 e" t; \# {9 c0 Z1 a( U3 W6 N/ R
goodNumber ++;
; n& @5 ?4 W# [9 f }
5 p8 m. w% N; r. Q! w }
7 M. L" d0 }& {8 Z8 l2 i
$ D; r. S1 `; ^' M1 }: \3 O7 L if(goodNumber >0){
2 a$ s& F9 o8 ^& d8 k; L7 w System.out.println("ZZZZZZZZZZZZZZZZZZZZZZZZZZZZ"); ; J. h+ \% y: S; k
Random rd1 = new Random();
4 S- L2 v) n4 u0 @ int select = rd1.nextInt(goodNumber);2 [( o1 c4 a$ O( a% _' I4 ?
potentialParterner = potenAgent[select];
, S, _" h' j2 M3 i value = true;9 x) V; y5 b- d
}6 V; H3 x' P8 v6 b1 i; q
return value;3 M" E, B4 s0 l! s! e( I9 @
}
# X2 t) D% u" ?; _始终只能打印出XXXXXXXXXXXXXXXXXXXX,请各位帮帮忙。 |
|