|
|
5仿真币
最近做流行病模型,需要在一个网格里面放多个Agent,我查了一下API,使用OrderedMultiGrid类来构造,里面提供了一些putObjectAt(int, int, index);之类的东西。似乎可以用。但是当我编程调试的时候发现在同一位置只能获取一个对象。这是很令人纳闷的事情。我想问一下Repast有提供什么好方法处理吗,不仅要能存进去,还要能方便的拿出来。
- K. O) [6 k3 h% G& U/ c private boolean findPotentialPartner(){
! ?6 P: n4 T! @+ \ boolean value = false;
$ W) r' k+ p" ^ ( S, c2 B% D- ?. B; p" V
OrderedMulti2DGrid grid = space.getCurrentAgentSpace();
0 E$ w6 ], }/ `$ o0 y# t Iterator iterator = grid.getIteratorAt(x, y);
; m7 k% @) k: m8 V9 b" k! G) O SexAgent ag1 = null; 3 C5 _; M2 I" o8 f, z
SexAgent [] potenAgent = new SexAgent[20];& J. z9 P& `+ F) G6 D3 M
int goodNumber = 0;
: r0 N$ o# r* f) o while(iterator.hasNext()){
4 d3 p$ j) j+ ^1 C6 Q System.out.println("XXXXXXXXXXXXXXXXXXXXX");# A) J5 v( i1 P* P" N% M N
ag1 = (SexAgent)iterator.next();
$ [3 F" M9 b# O9 w& v) v4 R if((ag1.sex == FEMALE) & H8 ?& R9 V, O4 Q9 {+ n" e
&&(!ag1.isCoupled())){
2 c* W7 ]: b9 x9 Y/ J! @ System.out.println("YYYYYYYYYYYYYYYYYYYY");% Z) M6 c1 }$ s0 k
potenAgent[goodNumber] = ag1;
, Y# R+ s, A( N goodNumber ++;& z, r4 R h1 h- S1 X8 [
}2 X- @/ }0 B7 S# }1 ~( m
}
9 \8 X) g; H; ^ W& Y$ {$ @ # g( x* M3 D$ X' `, v; e$ s# {
if(goodNumber >0){
4 O( S; M: \5 v! [- I System.out.println("ZZZZZZZZZZZZZZZZZZZZZZZZZZZZ");
+ Z+ v/ q9 z e" O+ S Random rd1 = new Random();5 _- r( N4 C; Y; U. Y' E
int select = rd1.nextInt(goodNumber);
$ P% k5 m% F. y( r potentialParterner = potenAgent[select];
+ j: h2 l9 Q: D value = true;) l% g2 l% w" V# R7 M
}
7 x/ @5 v4 ^# E" q8 E M, X return value;
8 U! t2 z+ N' G) H3 G$ c5 C }
! V5 o5 |" p D* V1 q3 B( E& i始终只能打印出XXXXXXXXXXXXXXXXXXXX,请各位帮帮忙。 |
|