|
|
5仿真币
最近做流行病模型,需要在一个网格里面放多个Agent,我查了一下API,使用OrderedMultiGrid类来构造,里面提供了一些putObjectAt(int, int, index);之类的东西。似乎可以用。但是当我编程调试的时候发现在同一位置只能获取一个对象。这是很令人纳闷的事情。我想问一下Repast有提供什么好方法处理吗,不仅要能存进去,还要能方便的拿出来。
9 f/ q8 u( D. m1 q0 B. [* `2 F private boolean findPotentialPartner(){: i7 i0 _( [' M0 M' B' ]
boolean value = false;
; L3 o& b8 ^! l8 G$ M" z
, G% i \3 ]6 j( v" x OrderedMulti2DGrid grid = space.getCurrentAgentSpace();
8 Z3 j! A" s: X4 m( k Iterator iterator = grid.getIteratorAt(x, y);. [4 k+ ^/ H& E. ^/ O* O
SexAgent ag1 = null;
4 b6 T% P% K+ {2 D o SexAgent [] potenAgent = new SexAgent[20];3 u) ]: v: S6 ?5 Y* n: b
int goodNumber = 0;
+ q, ], f! }3 E, ^' j$ q- u5 W5 X5 q while(iterator.hasNext()){
# i2 U* T$ M( [9 W' n5 M2 K7 K: a System.out.println("XXXXXXXXXXXXXXXXXXXXX");
' T( w r% n1 G; Q* } ag1 = (SexAgent)iterator.next();* Z9 V1 Z* P5 H* b6 T. c! g
if((ag1.sex == FEMALE)
3 ?1 s8 b0 `* w4 V6 v" W1 O &&(!ag1.isCoupled())){
: D" t- M0 p+ |4 Y0 i$ f System.out.println("YYYYYYYYYYYYYYYYYYYY");' C* G5 {& c8 v6 E) U
potenAgent[goodNumber] = ag1;; W9 m+ [8 ]: a; d' w: \
goodNumber ++;6 T+ p7 q! M! D( Z
}
2 u5 C7 ~/ |2 }- o }/ E; d' r9 G; u' V0 B
! i3 N6 r' E B# A4 d: W& a B if(goodNumber >0){: M8 N: F; m/ m$ R% V
System.out.println("ZZZZZZZZZZZZZZZZZZZZZZZZZZZZ");
% ], I5 w0 g& ]9 c Random rd1 = new Random();# K4 R% C( m, t) a0 \' X% _
int select = rd1.nextInt(goodNumber);
8 \+ }! P* Q9 j, h7 i+ x( G) i* B8 v potentialParterner = potenAgent[select];7 \* `: V# k* |3 D- g- l6 J
value = true;
4 ^/ C/ V! q" O+ ~2 v' p8 V }
% E1 z9 w! _7 b, P$ n/ m5 I* U. W ] return value; X- z' L6 ^, ^8 ?2 d8 N
}; ]3 q: R+ X& V) ^$ I
始终只能打印出XXXXXXXXXXXXXXXXXXXX,请各位帮帮忙。 |
|