|
5仿真币
最近做流行病模型,需要在一个网格里面放多个Agent,我查了一下API,使用OrderedMultiGrid类来构造,里面提供了一些putObjectAt(int, int, index);之类的东西。似乎可以用。但是当我编程调试的时候发现在同一位置只能获取一个对象。这是很令人纳闷的事情。我想问一下Repast有提供什么好方法处理吗,不仅要能存进去,还要能方便的拿出来。
7 l: y( R* \& ] private boolean findPotentialPartner(){# Y; Y' Y' a. @1 d/ y
boolean value = false; K3 p( r! S. y# j8 ]" W3 q* s
# R9 a2 D& h/ L) O+ l& a: I+ j7 {0 N
OrderedMulti2DGrid grid = space.getCurrentAgentSpace();4 J" k% K( [0 N3 C0 c0 q2 K! H# u$ e k
Iterator iterator = grid.getIteratorAt(x, y);" i) T9 Z u# t! R- X
SexAgent ag1 = null; 1 a, d$ d/ L+ T8 ^; ~, a3 \4 W
SexAgent [] potenAgent = new SexAgent[20];
2 H+ W8 X1 T/ T* J% ]2 d int goodNumber = 0;
! j7 }7 q+ a- O6 | while(iterator.hasNext()){2 [5 p5 W8 z! E" c
System.out.println("XXXXXXXXXXXXXXXXXXXXX");6 D( q5 z" c8 o* X. s
ag1 = (SexAgent)iterator.next();7 p2 ], q' e2 ]1 M5 W% }2 z5 a6 y
if((ag1.sex == FEMALE) 6 Q z7 ?6 m1 j1 ^, B
&&(!ag1.isCoupled())){
: k% X6 o6 j$ ?8 G6 y/ ]0 L System.out.println("YYYYYYYYYYYYYYYYYYYY");
* o8 W* @9 {9 R* u8 L potenAgent[goodNumber] = ag1;5 J/ E% v: e) s: Z, u l: A7 r
goodNumber ++; |: H7 Q' C* v5 R7 J8 Z- _
}
, }9 b) A+ {* n' o7 k' @4 C# F }" ~; C! k0 I% E5 a) D3 i
3 R8 K& R7 Y: L" v' X: M1 q# w
if(goodNumber >0){
+ c4 N0 w, ?5 [ System.out.println("ZZZZZZZZZZZZZZZZZZZZZZZZZZZZ");
' k/ c3 g4 l1 f# j: W3 j# I7 G Random rd1 = new Random();
/ B6 q$ A; ]5 }) F& d" y* B% C int select = rd1.nextInt(goodNumber);
- r# T, E' n. O7 T7 \ potentialParterner = potenAgent[select];
- `: N: J% o3 L# R) H value = true;
4 z4 K4 Q3 P8 q& i }, M) T& c; w8 p) _$ [# Y& t" a
return value;
( D7 {3 p/ y2 p8 h) ?0 w }) W7 M8 j+ i* ~/ ]' M
始终只能打印出XXXXXXXXXXXXXXXXXXXX,请各位帮帮忙。 |
|