|
|
5仿真币
最近做流行病模型,需要在一个网格里面放多个Agent,我查了一下API,使用OrderedMultiGrid类来构造,里面提供了一些putObjectAt(int, int, index);之类的东西。似乎可以用。但是当我编程调试的时候发现在同一位置只能获取一个对象。这是很令人纳闷的事情。我想问一下Repast有提供什么好方法处理吗,不仅要能存进去,还要能方便的拿出来。
1 v$ _, j/ d, G private boolean findPotentialPartner(){
" u) o5 b7 W# k2 `! O boolean value = false;
: x7 Z; L0 I: g; z, p# o- a + b: Y" z' t4 B, J, [" M: U
OrderedMulti2DGrid grid = space.getCurrentAgentSpace();4 w! Z( X8 g1 }6 [* z5 z: O# ?
Iterator iterator = grid.getIteratorAt(x, y);7 U+ F! J7 C! f- ?2 u
SexAgent ag1 = null; o8 g. F( A0 {- _8 g. M
SexAgent [] potenAgent = new SexAgent[20];- r* R6 t0 L3 X( v3 m
int goodNumber = 0;7 b0 w5 ?7 v" K9 h
while(iterator.hasNext()){
; ]% |3 O9 F! ^1 c. U System.out.println("XXXXXXXXXXXXXXXXXXXXX");$ x% |8 F% B! Q# l$ o3 p
ag1 = (SexAgent)iterator.next();3 }2 M# `9 Q7 i8 t- l
if((ag1.sex == FEMALE)
3 n4 }; |0 X9 M3 d &&(!ag1.isCoupled())){
% Y6 @9 }9 F; Y/ w" V( n+ h System.out.println("YYYYYYYYYYYYYYYYYYYY");
4 X V( Z; U; c# E4 m5 | potenAgent[goodNumber] = ag1;
0 \. s" X: A0 W6 z$ s; j; D4 c goodNumber ++;
4 D0 E+ R: P8 U8 J }
F* B" R' C0 @! s; L5 ~! h }/ n [) G* f0 D+ n+ g6 p3 g
0 m/ B( o1 J2 _0 V- U( [- ] if(goodNumber >0){# Y# C; Y. \; V) l
System.out.println("ZZZZZZZZZZZZZZZZZZZZZZZZZZZZ"); 5 _+ k2 h) ?5 f9 z/ O4 v' M( Y
Random rd1 = new Random();
9 }! j" _2 O* v1 J5 {" |! w' c int select = rd1.nextInt(goodNumber);( k G0 V- n$ V( t0 ]( J
potentialParterner = potenAgent[select];
; s4 K0 _0 S% A- Z+ ^. Q: o) J( e7 x value = true;( A" x' A+ k- f" Z: i8 O- D
}# H4 o( ^4 g3 t. D1 V# v D1 A
return value;8 V& l- U6 m2 B9 Z) r2 W) t2 p6 D
}
1 Z! B( R1 \% b. T3 ?始终只能打印出XXXXXXXXXXXXXXXXXXXX,请各位帮帮忙。 |
|