|
5仿真币
最近做流行病模型,需要在一个网格里面放多个Agent,我查了一下API,使用OrderedMultiGrid类来构造,里面提供了一些putObjectAt(int, int, index);之类的东西。似乎可以用。但是当我编程调试的时候发现在同一位置只能获取一个对象。这是很令人纳闷的事情。我想问一下Repast有提供什么好方法处理吗,不仅要能存进去,还要能方便的拿出来。
; M2 T: ^' |* X6 @ private boolean findPotentialPartner(){6 A3 F7 M; [; E; _& n
boolean value = false;( t1 U0 A+ _$ [- K
# m6 l k+ J" E
OrderedMulti2DGrid grid = space.getCurrentAgentSpace();/ _9 Q. Y% i* P! Y# F% s5 A
Iterator iterator = grid.getIteratorAt(x, y);6 o( I* D& d8 A/ c7 @. v
SexAgent ag1 = null;
6 H6 u' r( a& a9 i8 R! N/ N SexAgent [] potenAgent = new SexAgent[20];
' I! K+ Q, ~3 @$ E' G" n0 T. P int goodNumber = 0;
8 F6 Q4 _" s5 h- b4 O( S while(iterator.hasNext()){
% i- q- V' t/ j8 y" ~1 `( o, N! s System.out.println("XXXXXXXXXXXXXXXXXXXXX");
8 T/ l" f( ^& g8 M6 _. F6 S ag1 = (SexAgent)iterator.next();
; F0 ~; |7 A5 n if((ag1.sex == FEMALE)
4 X! Z, K- d) W &&(!ag1.isCoupled())){
$ [+ S- K4 ?4 m8 H7 B# g System.out.println("YYYYYYYYYYYYYYYYYYYY");. h0 i P( Z z3 f5 p6 ]7 E
potenAgent[goodNumber] = ag1;
: r! W* K* d% _ goodNumber ++;; n: I3 J8 @0 K. U
}
" n) e, g7 U6 q8 X! x+ e }, F7 b6 I/ P; z
- k2 t5 w0 q6 u1 X
if(goodNumber >0){
# V1 K3 a! K" M9 B8 T6 E. W, F" }' N System.out.println("ZZZZZZZZZZZZZZZZZZZZZZZZZZZZ");
( j0 D2 ?# O/ e& q- ` Random rd1 = new Random();
! g' s. ?' N5 Z! W0 T int select = rd1.nextInt(goodNumber);
$ H7 `$ M J* a. e potentialParterner = potenAgent[select];0 ^* w5 S. j/ H: G, C9 S4 [
value = true;' a: v+ a5 n, a9 y3 z0 L5 t
}
! q$ G$ K" ?# Q8 P7 p! M9 H return value;, w# B# I- s4 L- y+ o0 ^
}
, I$ T& P( E) S) `& j* Q始终只能打印出XXXXXXXXXXXXXXXXXXXX,请各位帮帮忙。 |
|