|
|
5仿真币
最近做流行病模型,需要在一个网格里面放多个Agent,我查了一下API,使用OrderedMultiGrid类来构造,里面提供了一些putObjectAt(int, int, index);之类的东西。似乎可以用。但是当我编程调试的时候发现在同一位置只能获取一个对象。这是很令人纳闷的事情。我想问一下Repast有提供什么好方法处理吗,不仅要能存进去,还要能方便的拿出来。
$ U$ Z2 @2 H1 X private boolean findPotentialPartner(){
6 ~+ ?% s* p& X- d3 M0 r" `6 } boolean value = false;
/ Z z2 [- g) Q * L6 @# v% H& d6 V9 ]
OrderedMulti2DGrid grid = space.getCurrentAgentSpace();
7 m" y8 b9 t& I" E z( r Iterator iterator = grid.getIteratorAt(x, y);/ X9 m" Y8 ]. B/ i7 z2 F
SexAgent ag1 = null; . d! j% _5 N( k9 m c1 F7 J H1 ?: I4 p
SexAgent [] potenAgent = new SexAgent[20];1 O- v. s1 v0 x' _* ]
int goodNumber = 0;
! q" D; d6 ~/ w0 d while(iterator.hasNext()){- B F* o9 U. h2 _- [
System.out.println("XXXXXXXXXXXXXXXXXXXXX");! Z* }# b) G6 e( j8 H! {, P( z1 n
ag1 = (SexAgent)iterator.next();
1 V2 |) k8 B+ |$ X' u4 P if((ag1.sex == FEMALE) . Q/ G0 i* f7 h
&&(!ag1.isCoupled())){! U1 y0 [3 t- [% ~ o
System.out.println("YYYYYYYYYYYYYYYYYYYY");
$ K/ c( U& d, V+ ?* ~$ ?$ ]6 y potenAgent[goodNumber] = ag1;' i# @2 ]0 I+ ?) m5 q
goodNumber ++;( y$ U/ v# I. }- B4 j. B* e/ K
}7 T V4 X4 D) O' b* S
}
T% C. r6 d2 r
. i3 v. \. b6 N& ?1 }8 S! T9 c! Y if(goodNumber >0){
5 w% y( r; S Y( g+ J' U3 n+ Z System.out.println("ZZZZZZZZZZZZZZZZZZZZZZZZZZZZ"); ! y, [9 p* h' b+ B
Random rd1 = new Random();
, Z! s2 d& L! t9 U% O: p: d int select = rd1.nextInt(goodNumber);5 }2 z! l- r+ M& f) w4 k
potentialParterner = potenAgent[select];9 ^& Y! P7 t* a
value = true;" E9 y6 `5 H) U U5 c1 j
}
; b4 M8 m- ?$ Q4 K$ t5 g return value;
& z1 `1 s) V6 r2 f* d* ]0 u }
8 ^) g* V6 h ?9 d: k始终只能打印出XXXXXXXXXXXXXXXXXXXX,请各位帮帮忙。 |
|