|
|
5仿真币
最近做流行病模型,需要在一个网格里面放多个Agent,我查了一下API,使用OrderedMultiGrid类来构造,里面提供了一些putObjectAt(int, int, index);之类的东西。似乎可以用。但是当我编程调试的时候发现在同一位置只能获取一个对象。这是很令人纳闷的事情。我想问一下Repast有提供什么好方法处理吗,不仅要能存进去,还要能方便的拿出来。
3 s% R" r$ i1 I% F% B' x0 G$ l0 f0 z private boolean findPotentialPartner(){
: l: R8 t) j7 o9 E4 f7 \* Z boolean value = false;6 M$ `& k: x- z' l0 p
5 Q+ Y( T% v- B5 w8 w A OrderedMulti2DGrid grid = space.getCurrentAgentSpace();
$ B3 I7 Y; ?7 v2 A0 F; R Iterator iterator = grid.getIteratorAt(x, y);
/ j! Q$ L, c7 o SexAgent ag1 = null; 9 g1 ?: J1 j( l& n' O2 t4 q( V0 t
SexAgent [] potenAgent = new SexAgent[20];+ |% m4 C1 U' J- q% G0 b! j. }3 Y3 O
int goodNumber = 0;
' e/ b& r* F' M; n: ?3 x: v4 } while(iterator.hasNext()){
! I) }7 T6 ~6 D) J6 v: M. Q System.out.println("XXXXXXXXXXXXXXXXXXXXX");& `* X5 \/ N$ H- e# Q$ e
ag1 = (SexAgent)iterator.next();! ^$ G; ^$ J/ D, c
if((ag1.sex == FEMALE)
- b' m( K5 R' p4 x: g: D! U' Z &&(!ag1.isCoupled())){7 w( d8 R4 K0 a# _
System.out.println("YYYYYYYYYYYYYYYYYYYY");
( O% F9 p6 C2 k& o4 r potenAgent[goodNumber] = ag1;
% z( D4 Z5 L/ w* p6 {& l goodNumber ++;
4 u' M- ], C: C/ Y }
7 F( W( M' j1 p8 u7 | }
3 L) d6 Y# n7 V) F( R* } - o) o6 K+ [5 R- _( P: p
if(goodNumber >0){
' m! k- z0 m3 [; f& s System.out.println("ZZZZZZZZZZZZZZZZZZZZZZZZZZZZ"); 5 U- D+ a4 X7 E4 a. |
Random rd1 = new Random();
% N3 R- P$ E# f- i! {' \$ e int select = rd1.nextInt(goodNumber);" B1 J* b9 k5 A: ^ b5 s. v
potentialParterner = potenAgent[select];* l. U8 F) h1 N) G, z) C
value = true;
+ R9 L( n" u0 N) i% n4 F }, W+ m; t$ D; N) ?/ v5 O- O
return value;
c7 m% O3 {( O8 u. y2 m, b6 f }
( N5 y5 J1 |% ]5 t始终只能打印出XXXXXXXXXXXXXXXXXXXX,请各位帮帮忙。 |
|