|
|
5仿真币
最近做流行病模型,需要在一个网格里面放多个Agent,我查了一下API,使用OrderedMultiGrid类来构造,里面提供了一些putObjectAt(int, int, index);之类的东西。似乎可以用。但是当我编程调试的时候发现在同一位置只能获取一个对象。这是很令人纳闷的事情。我想问一下Repast有提供什么好方法处理吗,不仅要能存进去,还要能方便的拿出来。
. f6 W; o* D& k private boolean findPotentialPartner(){
7 L! {5 [. D( H5 f" Y5 @7 W boolean value = false;
8 `) ?! Z- w0 y+ l3 `. s# B$ A 1 }5 p7 w9 z+ X( M; {* G5 k6 ^
OrderedMulti2DGrid grid = space.getCurrentAgentSpace();+ A a# r# o% Y7 C! ~' X
Iterator iterator = grid.getIteratorAt(x, y);
, i- M7 A2 C2 y8 h SexAgent ag1 = null;
5 }2 X# j" c: }6 k5 @5 P- H) V' ~* [ SexAgent [] potenAgent = new SexAgent[20];
8 d! S6 ?; a7 x( v int goodNumber = 0;
* i4 V5 {" z% T( p. Y$ p3 B) i% O while(iterator.hasNext()){
, k* b& z9 ^9 z+ g/ e$ l System.out.println("XXXXXXXXXXXXXXXXXXXXX");
2 K$ q+ \* @* l$ I ag1 = (SexAgent)iterator.next();4 B3 M* Q& J$ C5 j" L
if((ag1.sex == FEMALE)
8 s* ]: Y* Z0 e &&(!ag1.isCoupled())){
4 m! J t$ ~; l$ ^0 I' H) W System.out.println("YYYYYYYYYYYYYYYYYYYY");
! R9 E7 S7 S; s( [ potenAgent[goodNumber] = ag1;
9 X/ h S( b2 ]) E# n T# B/ Y9 [ goodNumber ++;& ^5 H/ U# }( _! F
}* E6 b2 u- g k0 j9 U
}: E; q+ J" z2 ? o5 }* [
7 a# A" P' M i+ c4 F, K% x5 L
if(goodNumber >0){, m3 s) k2 j5 a* Y3 c. ^3 N2 }1 \
System.out.println("ZZZZZZZZZZZZZZZZZZZZZZZZZZZZ"); 2 \& n7 E1 D7 o p4 T! V
Random rd1 = new Random();
: t* J* n' {" s4 b( g. L int select = rd1.nextInt(goodNumber);
2 E* A; i7 K. z% z; M potentialParterner = potenAgent[select];
5 z9 d1 }2 J0 Z: E" {9 z value = true;5 y" h/ a2 U; {, T8 h
}0 a# r& f- G, w8 j+ C
return value;
# G- ^% Y5 Z& B }3 ]5 }2 f* S! o! W& @, f4 P: U
始终只能打印出XXXXXXXXXXXXXXXXXXXX,请各位帮帮忙。 |
|