|
|
5仿真币
最近做流行病模型,需要在一个网格里面放多个Agent,我查了一下API,使用OrderedMultiGrid类来构造,里面提供了一些putObjectAt(int, int, index);之类的东西。似乎可以用。但是当我编程调试的时候发现在同一位置只能获取一个对象。这是很令人纳闷的事情。我想问一下Repast有提供什么好方法处理吗,不仅要能存进去,还要能方便的拿出来。
' m' d; h, ]+ s8 G/ o private boolean findPotentialPartner(){3 e- _8 C# c) D
boolean value = false;
/ H/ m6 y8 z/ f- q( |' L 5 t- L8 q( U; n4 ], j! J
OrderedMulti2DGrid grid = space.getCurrentAgentSpace();- v7 m& A+ p, s* O
Iterator iterator = grid.getIteratorAt(x, y);) S& `. _( z% t! ?, q
SexAgent ag1 = null;
7 ]: Y' H6 g/ t! Q& \ SexAgent [] potenAgent = new SexAgent[20];
) ]: \! b1 w4 E+ r2 b) j" Y1 @$ e/ R" `: } int goodNumber = 0;
6 e; b: y% F2 [ D$ N: M while(iterator.hasNext()){% K; N! B+ e, c7 F( [; h
System.out.println("XXXXXXXXXXXXXXXXXXXXX");) ^3 Y# @2 H5 k' p4 ^* b% `# P
ag1 = (SexAgent)iterator.next();. s4 |; i6 |: h
if((ag1.sex == FEMALE) ( |5 S' t/ o# v. A4 P- e1 @
&&(!ag1.isCoupled())){: Q! A" |, N# B% z% Z) A$ I6 D
System.out.println("YYYYYYYYYYYYYYYYYYYY");$ G" G2 m$ b" t o x
potenAgent[goodNumber] = ag1;
% e2 \$ q0 @: q# i: q! J, Q/ [7 g! D1 B goodNumber ++;5 d/ }' @4 f ^- [
}
+ t( ~$ u( W& w3 h: j% m }! r' B0 g1 ~) i. X/ P1 S* Q
9 G2 G) ?" n V0 Z! C% ^ if(goodNumber >0){
0 E% z& t" q# V* N8 \0 `4 c* ? System.out.println("ZZZZZZZZZZZZZZZZZZZZZZZZZZZZ"); # f- x* u* \( k: R( {, M) l
Random rd1 = new Random();
$ F i6 x; U: i' I int select = rd1.nextInt(goodNumber);
; h( Q; c4 \4 U" h; v: i) o K! J potentialParterner = potenAgent[select];+ }6 r8 D$ x1 }; r' l+ v
value = true;
1 \0 I. U4 S0 D$ o6 r( { }
0 M9 K: d _0 ?0 q return value;
5 w' v' p* P5 N0 ~7 c: w; x }
8 K( s$ n% ]5 ?) E; H2 ?7 |2 m始终只能打印出XXXXXXXXXXXXXXXXXXXX,请各位帮帮忙。 |
|