|
|
5仿真币
最近做流行病模型,需要在一个网格里面放多个Agent,我查了一下API,使用OrderedMultiGrid类来构造,里面提供了一些putObjectAt(int, int, index);之类的东西。似乎可以用。但是当我编程调试的时候发现在同一位置只能获取一个对象。这是很令人纳闷的事情。我想问一下Repast有提供什么好方法处理吗,不仅要能存进去,还要能方便的拿出来。
, P3 t; `. R2 P- u5 l) ]; ]/ j5 G private boolean findPotentialPartner(){
9 }! |, z3 S2 t+ R2 r boolean value = false;
4 z1 R. e: b) D! g6 h4 c
% Z! s$ R' z1 ]4 C# ^, D" R. G6 U8 x OrderedMulti2DGrid grid = space.getCurrentAgentSpace();! o; ?! C1 _9 T/ A: U5 \
Iterator iterator = grid.getIteratorAt(x, y);" i: H4 e# y2 u/ @. y
SexAgent ag1 = null; % J5 W3 `* H6 m; P. ~
SexAgent [] potenAgent = new SexAgent[20];% ^9 C1 U- i, Q5 f
int goodNumber = 0;+ Q( T3 f( `/ B- Q8 @" P5 M7 Y. d' q
while(iterator.hasNext()){
2 Q7 L7 j3 d) O' x7 ~ System.out.println("XXXXXXXXXXXXXXXXXXXXX");& G% ]: R" {/ O
ag1 = (SexAgent)iterator.next();. j& Q% z/ l9 p! l/ x! G' L
if((ag1.sex == FEMALE) 4 L, n0 d; [8 K* O% `4 g' _# z
&&(!ag1.isCoupled())){, q2 O! G$ C/ q4 L( T1 W
System.out.println("YYYYYYYYYYYYYYYYYYYY");
( C$ F! ^. [0 w/ }5 h( v+ q- q potenAgent[goodNumber] = ag1;8 ?1 |9 f+ X% k* U+ n! \
goodNumber ++;
8 q4 J4 s4 s& q4 ]3 e7 [. Z }
% N& j0 L6 r9 F) k* U K# } }- j0 Z! Y- F% l: N% ]# E
1 n+ }) {7 |- G2 r4 \
if(goodNumber >0){ b1 g* D: H( D0 g4 i
System.out.println("ZZZZZZZZZZZZZZZZZZZZZZZZZZZZ");
( M! M3 h: x" a r' M Random rd1 = new Random();
/ C* O% L) @3 @- V% q+ N; r" f int select = rd1.nextInt(goodNumber);5 F# l+ D* I5 y
potentialParterner = potenAgent[select];
! e9 r9 e. B4 d) {* c4 I value = true; d" M) _. Q6 Z
}
3 t- s: e8 t* ^8 y8 o return value;
7 g4 f6 A% Z7 R }
6 y% C% v5 K/ n始终只能打印出XXXXXXXXXXXXXXXXXXXX,请各位帮帮忙。 |
|