|
|
5仿真币
最近做流行病模型,需要在一个网格里面放多个Agent,我查了一下API,使用OrderedMultiGrid类来构造,里面提供了一些putObjectAt(int, int, index);之类的东西。似乎可以用。但是当我编程调试的时候发现在同一位置只能获取一个对象。这是很令人纳闷的事情。我想问一下Repast有提供什么好方法处理吗,不仅要能存进去,还要能方便的拿出来。5 p4 Z1 b9 n7 }, t
private boolean findPotentialPartner(){4 J$ a6 p) H: u
boolean value = false;) H; m$ X: Z+ m) K0 P t
l( v+ I& P; A e8 D$ d
OrderedMulti2DGrid grid = space.getCurrentAgentSpace();
! P; r" ^: \1 h3 u( Z Iterator iterator = grid.getIteratorAt(x, y);
5 y# {' s* q$ j" `8 o SexAgent ag1 = null; 2 K' n" q9 |" v0 w! [
SexAgent [] potenAgent = new SexAgent[20];% J6 h. c( B+ W
int goodNumber = 0;" Q. Z2 F0 @/ _8 t2 E
while(iterator.hasNext()){
' J7 D( K$ i; q! ] System.out.println("XXXXXXXXXXXXXXXXXXXXX");
! A/ @/ {8 }- Z ag1 = (SexAgent)iterator.next();2 e* |1 J# f L* h/ `
if((ag1.sex == FEMALE) / N* N* ~. @) L1 p& s, |
&&(!ag1.isCoupled())){9 ~* j8 f& L: W7 s$ J
System.out.println("YYYYYYYYYYYYYYYYYYYY");
% r+ M" a6 h, ]& k* H potenAgent[goodNumber] = ag1; Y0 D& n/ l5 g% e0 l* a
goodNumber ++;
3 C Z# }. r1 u) c9 l }
3 y" z( J! i. A1 P }/ v5 k) ^% I3 k$ B! W9 T, Q
/ W) P. C8 E0 `: c/ _ if(goodNumber >0){
9 |# v3 s. }2 f7 D t; G& m3 ]5 y5 K System.out.println("ZZZZZZZZZZZZZZZZZZZZZZZZZZZZ");
7 {0 a& V/ Y* x! t5 k( y2 f Random rd1 = new Random();& {* @7 b) g, J
int select = rd1.nextInt(goodNumber);
, \/ K+ j, m" S# x: o# u9 U! ] potentialParterner = potenAgent[select];
) M* t3 T& Z8 l& Q3 `, Q5 v value = true;: x8 x( V9 J3 d, y! r% |' X J
}
6 p; A# B! q- X! e$ q/ F0 H return value;, M$ D* T$ H9 Y6 i& A; X5 U% N
}3 p4 v: I; k+ ~2 W
始终只能打印出XXXXXXXXXXXXXXXXXXXX,请各位帮帮忙。 |
|