|
|
5仿真币
最近做流行病模型,需要在一个网格里面放多个Agent,我查了一下API,使用OrderedMultiGrid类来构造,里面提供了一些putObjectAt(int, int, index);之类的东西。似乎可以用。但是当我编程调试的时候发现在同一位置只能获取一个对象。这是很令人纳闷的事情。我想问一下Repast有提供什么好方法处理吗,不仅要能存进去,还要能方便的拿出来。3 H" d$ o, l- h
private boolean findPotentialPartner(){7 V4 N6 i6 t1 B- T0 d
boolean value = false;
' ]) I X Q1 F0 X' w) c ( H; j3 s' F7 p$ ~, u, O" c( ]
OrderedMulti2DGrid grid = space.getCurrentAgentSpace();
% S4 @: U+ D v f; ~ n8 K7 C Iterator iterator = grid.getIteratorAt(x, y);% W# O: Q) Z* @8 O! f+ ]
SexAgent ag1 = null;
/ n% G6 \2 D$ L8 ^8 H/ I# H7 T SexAgent [] potenAgent = new SexAgent[20];
) x" w; ?; z, E3 ]2 v8 E4 i* \ int goodNumber = 0;- [7 v1 `9 _+ N. t
while(iterator.hasNext()){
5 t1 b9 u2 j" A. M- g System.out.println("XXXXXXXXXXXXXXXXXXXXX");
( O& H; |/ X. B- z. B% ? ag1 = (SexAgent)iterator.next();
- Z% s2 @2 X7 k/ u if((ag1.sex == FEMALE) 0 i, @2 F! N$ Y) w, J* J0 w) R
&&(!ag1.isCoupled())){
7 q! D2 ^2 v: g7 Q% Z0 E+ W& @ System.out.println("YYYYYYYYYYYYYYYYYYYY");
! @0 `) A5 Y9 _: I2 R# l potenAgent[goodNumber] = ag1;
2 I: G/ O" [; w$ z1 Y3 Y2 j goodNumber ++;& Y/ n) o' }. @, ]$ X( o4 X6 A
}
; T. y" j V9 x. y+ x }: |/ N0 k: K: g9 C( `
& k1 \, E: o2 I if(goodNumber >0){9 _/ R L8 t) k# r, o, u/ A0 h( G! R
System.out.println("ZZZZZZZZZZZZZZZZZZZZZZZZZZZZ"); 7 P; I9 O3 y$ w! W; @
Random rd1 = new Random();
) @$ Y( z) n' Z( h$ B( w int select = rd1.nextInt(goodNumber);
. n4 L! O: F2 b. s$ V potentialParterner = potenAgent[select];
& d0 U! d* t. t" O" o value = true;
+ p" S# ]0 {* B' ~) N }
4 ?% S; K# o7 p* _0 f# b1 d return value;5 b9 q2 g8 x3 g
}5 M4 e% n" i3 ^$ r! Y
始终只能打印出XXXXXXXXXXXXXXXXXXXX,请各位帮帮忙。 |
|