|
|
5仿真币
最近做流行病模型,需要在一个网格里面放多个Agent,我查了一下API,使用OrderedMultiGrid类来构造,里面提供了一些putObjectAt(int, int, index);之类的东西。似乎可以用。但是当我编程调试的时候发现在同一位置只能获取一个对象。这是很令人纳闷的事情。我想问一下Repast有提供什么好方法处理吗,不仅要能存进去,还要能方便的拿出来。
i& Z: e" ^( u8 s U, P private boolean findPotentialPartner(){
* _: t8 a+ t5 m* X; ^) r boolean value = false;; I( M! g( E1 i' C `( S; I2 w
2 `/ y& F' s2 }( M2 O/ r8 e- C OrderedMulti2DGrid grid = space.getCurrentAgentSpace();# l9 a1 D; U- _. P8 e
Iterator iterator = grid.getIteratorAt(x, y);
6 p4 I! q8 T' b4 l SexAgent ag1 = null;
9 o1 J6 c3 ]; J, _ o" g* I SexAgent [] potenAgent = new SexAgent[20];
# r* o$ K' V+ g( X int goodNumber = 0;
n) U* ~( n2 h* R8 \ while(iterator.hasNext()){3 Q( o4 _$ @) R9 X
System.out.println("XXXXXXXXXXXXXXXXXXXXX");3 m5 @4 ^+ A/ S; F; l* g3 ~5 v( d" q
ag1 = (SexAgent)iterator.next();
& T6 Q) K. r( w7 p if((ag1.sex == FEMALE)
9 q! ?- Q: G9 b& o &&(!ag1.isCoupled())){2 ~3 F8 I2 W" u, i; k( [
System.out.println("YYYYYYYYYYYYYYYYYYYY");
5 u1 u" H/ S: |, Y7 ~8 b potenAgent[goodNumber] = ag1;( P/ o0 s& _+ e) q* O' [
goodNumber ++;
8 y( Y6 n. h! ~& L$ F c }
$ `/ [) ] v! x$ Y- H; z4 _1 @+ h }
$ e& N$ _5 R+ ~5 _) K" B
4 l3 m B U, W9 |+ e5 g0 t if(goodNumber >0){$ D' a- u, ~! s" t& N
System.out.println("ZZZZZZZZZZZZZZZZZZZZZZZZZZZZ");
9 l6 k! i' R! ~) h! G: _ Random rd1 = new Random();
. G; K$ [. Q- M' U3 m/ ~8 R int select = rd1.nextInt(goodNumber);
! i0 Q7 n& R* R4 ]1 H2 d potentialParterner = potenAgent[select];
5 I' x6 j' M, H+ ?( u+ q value = true;
# A2 J0 ^' a* w& k) L/ k }6 n# G/ K, O5 y: s
return value;/ b* y9 f, R2 q
}! s+ L' G# G8 }. j
始终只能打印出XXXXXXXXXXXXXXXXXXXX,请各位帮帮忙。 |
|