|
|
5仿真币
最近做流行病模型,需要在一个网格里面放多个Agent,我查了一下API,使用OrderedMultiGrid类来构造,里面提供了一些putObjectAt(int, int, index);之类的东西。似乎可以用。但是当我编程调试的时候发现在同一位置只能获取一个对象。这是很令人纳闷的事情。我想问一下Repast有提供什么好方法处理吗,不仅要能存进去,还要能方便的拿出来。
4 b" k( d+ C3 T; ^ T, x private boolean findPotentialPartner(){ x; J5 q2 s& t7 B' ], i# `
boolean value = false;
1 N/ h j' T4 g! d. k9 ?9 S . @* o" J) K) Y1 y/ y$ I9 Q6 \
OrderedMulti2DGrid grid = space.getCurrentAgentSpace();
8 D0 k8 Y! E* G+ `! s+ r# A Iterator iterator = grid.getIteratorAt(x, y);
" P6 ?+ X. I9 v- }# c7 W! m SexAgent ag1 = null; 3 ^' m- _) _" g: Y) E( A P9 [$ T
SexAgent [] potenAgent = new SexAgent[20];
! H4 Q" j! {4 [' V( N int goodNumber = 0;3 Y& @3 j: l6 J; n1 H( _ i4 O0 ?5 }' b
while(iterator.hasNext()){3 ]; [+ c. k) Y
System.out.println("XXXXXXXXXXXXXXXXXXXXX");; w) D6 L. K8 J4 E
ag1 = (SexAgent)iterator.next();& r6 S1 p3 f, }6 F# X( K' S2 v
if((ag1.sex == FEMALE) + G- n8 w% y# b
&&(!ag1.isCoupled())){" m# o# e7 ~1 r0 ]. t7 R
System.out.println("YYYYYYYYYYYYYYYYYYYY");* h$ L3 r' ]# A4 {8 }: _
potenAgent[goodNumber] = ag1;$ g0 a" D, S/ h
goodNumber ++;
6 r& |, b2 G& f4 } }
1 S3 T7 O3 A; r$ \9 C }# F- i! Z _! q; `4 J6 O' {; v1 G
- u; x+ ^' g$ w! C, V W$ L. j
if(goodNumber >0){
1 U6 ]4 g6 H4 L) K; ~5 N. f8 I System.out.println("ZZZZZZZZZZZZZZZZZZZZZZZZZZZZ");
4 a5 G' P( A Q0 y Random rd1 = new Random();
* N7 U9 M3 A: V: R) o# Y int select = rd1.nextInt(goodNumber);( {0 y- w, f2 ]
potentialParterner = potenAgent[select];
5 y5 ]$ \4 ~; k4 A6 k, k value = true;
3 b) t2 N: ^ y; ?0 G7 X# L9 [ }
% }+ @# p( l T! j+ P7 J/ j return value;
7 n" v. I" p0 T: b2 F }
: n+ }" }$ B! G1 T始终只能打印出XXXXXXXXXXXXXXXXXXXX,请各位帮帮忙。 |
|