|
|
5仿真币
最近做流行病模型,需要在一个网格里面放多个Agent,我查了一下API,使用OrderedMultiGrid类来构造,里面提供了一些putObjectAt(int, int, index);之类的东西。似乎可以用。但是当我编程调试的时候发现在同一位置只能获取一个对象。这是很令人纳闷的事情。我想问一下Repast有提供什么好方法处理吗,不仅要能存进去,还要能方便的拿出来。' A* v$ Y i+ `" D5 x9 h
private boolean findPotentialPartner(){
! d3 o4 I8 S$ G1 Q6 {/ U. M boolean value = false;
5 m% l7 B$ ^, e) X# S8 u9 g
2 k% I8 U. ]& D. i; T5 Y& X OrderedMulti2DGrid grid = space.getCurrentAgentSpace();+ L; M" @0 l7 M+ k5 H
Iterator iterator = grid.getIteratorAt(x, y);
1 t6 \8 n$ x/ U SexAgent ag1 = null; 5 u7 ?* A8 J' H
SexAgent [] potenAgent = new SexAgent[20];$ T! D _' i9 b6 A' O; p
int goodNumber = 0;; v$ l. F1 K4 x8 D* r
while(iterator.hasNext()){
* k/ C& j6 N4 `& f W* ~- j+ \* B( o System.out.println("XXXXXXXXXXXXXXXXXXXXX");" A- H. T. ^% e3 h
ag1 = (SexAgent)iterator.next();0 S {' ?( p2 b* I! H
if((ag1.sex == FEMALE) 0 \* E" T$ {3 t3 a# p
&&(!ag1.isCoupled())){
8 ]6 v4 X7 O2 p/ C1 f6 R System.out.println("YYYYYYYYYYYYYYYYYYYY");
+ h) H+ f" G) T2 Q& J7 [ potenAgent[goodNumber] = ag1;
5 M* Y: I* |" \, _7 h goodNumber ++;" P8 r E! g4 n( S4 X, b. u
}+ Z( h4 `* a% L9 F& W' W2 r; c
}
1 d8 ~) H$ S$ j/ E- }1 e4 H6 v , q6 n/ Q- Y* G: h$ P! @5 m$ P
if(goodNumber >0){
% e5 F5 @1 a6 U |0 H' F8 [# p System.out.println("ZZZZZZZZZZZZZZZZZZZZZZZZZZZZ");
4 s, K/ _3 E& k, } Random rd1 = new Random();
$ n4 Y- P P1 U7 t9 G4 t int select = rd1.nextInt(goodNumber);! `4 h+ ?0 r9 Y7 X0 }* U- S- G
potentialParterner = potenAgent[select];
! z! p( W# ~& I( ~ value = true;
" L5 q1 [: R, B; T5 L+ P9 \ }
( F8 k& z' S* f3 ^8 p3 h return value;
% J% j |6 [ Y) M; L0 x; C }
, ]. V& _( s# w始终只能打印出XXXXXXXXXXXXXXXXXXXX,请各位帮帮忙。 |
|