|
|
5仿真币
最近做流行病模型,需要在一个网格里面放多个Agent,我查了一下API,使用OrderedMultiGrid类来构造,里面提供了一些putObjectAt(int, int, index);之类的东西。似乎可以用。但是当我编程调试的时候发现在同一位置只能获取一个对象。这是很令人纳闷的事情。我想问一下Repast有提供什么好方法处理吗,不仅要能存进去,还要能方便的拿出来。9 a8 O: X8 @3 Z4 q X1 e! r% A
private boolean findPotentialPartner(){
, i _. g( r- }* `) R) `# L$ g1 ` boolean value = false;6 k& k5 p' ]( S8 T+ i$ {" ^
4 C0 `! n' C# I( Z, J' X9 m" J* o OrderedMulti2DGrid grid = space.getCurrentAgentSpace();4 C+ ?/ r O4 S+ h
Iterator iterator = grid.getIteratorAt(x, y);+ d2 {# v$ k& R2 J; S
SexAgent ag1 = null; : M. b; F4 E# A5 ^" q
SexAgent [] potenAgent = new SexAgent[20];
0 n a- Y& F- f/ T; @ int goodNumber = 0;" S1 v% ?) }4 s3 f9 O. L
while(iterator.hasNext()){
9 \! a* s1 t! z$ |6 c System.out.println("XXXXXXXXXXXXXXXXXXXXX");4 v6 N4 f! k7 o/ |$ B
ag1 = (SexAgent)iterator.next();
' W& V! Y9 }5 _ p if((ag1.sex == FEMALE)
+ I) ?3 F4 i, e$ r &&(!ag1.isCoupled())){+ H% a+ y& y* v3 O
System.out.println("YYYYYYYYYYYYYYYYYYYY");
: `9 {+ ^ m7 K potenAgent[goodNumber] = ag1;
# L3 o! u( u J4 Z2 y goodNumber ++;. k" T; @! \8 ]; c% n7 o7 ?
} L% ]$ d- c! O+ s% ^7 c* Q: S
}
2 D c. p& t2 t6 _' y0 t) d - S C. `) C, a% E# v/ ^9 e! P
if(goodNumber >0){
% Y( ]" d; @. L$ Y System.out.println("ZZZZZZZZZZZZZZZZZZZZZZZZZZZZ"); 8 b/ Z3 `, o+ c, D
Random rd1 = new Random();9 |+ Z, x6 ]) O- j( q5 T7 b1 y X2 u2 \
int select = rd1.nextInt(goodNumber);/ I" N- r5 x; a w
potentialParterner = potenAgent[select];% i2 h& U; ?. z) J
value = true;# O! D2 _* D Z0 _7 x- i' j
}
1 S4 A+ d% L5 k7 b return value;
2 M, Q; G9 _# `3 T h; ] }
7 y2 x7 l* L% n! L始终只能打印出XXXXXXXXXXXXXXXXXXXX,请各位帮帮忙。 |
|