|
|
5仿真币
最近做流行病模型,需要在一个网格里面放多个Agent,我查了一下API,使用OrderedMultiGrid类来构造,里面提供了一些putObjectAt(int, int, index);之类的东西。似乎可以用。但是当我编程调试的时候发现在同一位置只能获取一个对象。这是很令人纳闷的事情。我想问一下Repast有提供什么好方法处理吗,不仅要能存进去,还要能方便的拿出来。) R! E# v! b( t2 A" m4 t& x( Y
private boolean findPotentialPartner(){8 d" T) G# y6 @' g3 O
boolean value = false;7 |% e* a4 K5 ^6 h: G( d1 O( B
8 p( g4 H& R5 B4 r: o" }5 p
OrderedMulti2DGrid grid = space.getCurrentAgentSpace();
# Y% u) p( b5 x6 p5 f# \3 f Iterator iterator = grid.getIteratorAt(x, y);' {8 U# ^! M* @$ R7 N5 z$ i
SexAgent ag1 = null;
0 `3 D( w* Q, E SexAgent [] potenAgent = new SexAgent[20];
/ o" |: C7 ^- j- ?/ }: `: j int goodNumber = 0; B$ V; H' \( u2 R$ h( R( R& P
while(iterator.hasNext()){
( i1 g5 J/ _4 V& m- i4 G4 z% I. @ System.out.println("XXXXXXXXXXXXXXXXXXXXX"); K$ m( Y8 c! A+ ?& G
ag1 = (SexAgent)iterator.next();8 O/ j7 t* u. g6 M: E `$ `* \
if((ag1.sex == FEMALE) ( z0 \' k+ D/ ^/ S! z# w" Q4 B
&&(!ag1.isCoupled())){3 J. w$ f( C, v9 v; @8 w+ e: R, V
System.out.println("YYYYYYYYYYYYYYYYYYYY");
/ b5 ]) f6 }7 e* m; j. g potenAgent[goodNumber] = ag1;! A2 T7 I! e. J) W
goodNumber ++;& o3 ^9 q0 Q) D4 o! e
}
, y1 v. q0 p' R' t }
- l$ ]2 \/ t7 i $ A1 h+ H' o. C
if(goodNumber >0){
; d* A0 v. [) g' S* ~ System.out.println("ZZZZZZZZZZZZZZZZZZZZZZZZZZZZ"); ' w& }, g' @8 E3 n2 [) U- T$ }( Q
Random rd1 = new Random();# O4 Z6 A! G5 n& ^8 f
int select = rd1.nextInt(goodNumber);
: u! p0 c# s$ Z0 A. X: ` W c' { potentialParterner = potenAgent[select];
5 v5 ]9 j& z3 }* ?$ M5 Z0 B& {1 [& ] value = true;9 d7 z3 Z2 O D/ d" H a8 O
}
1 D2 N. ^8 z- g; Y1 _ return value;2 _0 U; l4 e7 h. `& h1 B
}2 z+ U- v( Z+ U& H8 S& \
始终只能打印出XXXXXXXXXXXXXXXXXXXX,请各位帮帮忙。 |
|