|
5仿真币
最近做流行病模型,需要在一个网格里面放多个Agent,我查了一下API,使用OrderedMultiGrid类来构造,里面提供了一些putObjectAt(int, int, index);之类的东西。似乎可以用。但是当我编程调试的时候发现在同一位置只能获取一个对象。这是很令人纳闷的事情。我想问一下Repast有提供什么好方法处理吗,不仅要能存进去,还要能方便的拿出来。
+ ?( j( |( L$ T p private boolean findPotentialPartner(){; {6 [2 M! q# ~$ f
boolean value = false;! G7 ^2 |/ a* J! `, Y. u
. k/ Y! B2 v6 q: ?) y3 s0 q OrderedMulti2DGrid grid = space.getCurrentAgentSpace();, [6 _; h, }4 F/ i2 H& g& w
Iterator iterator = grid.getIteratorAt(x, y);
6 r0 m; M* \& h SexAgent ag1 = null; , l! z( d K/ r9 @
SexAgent [] potenAgent = new SexAgent[20];
; | i# f% S4 ]% e/ v F7 L# P) z int goodNumber = 0;
: G. _ R- l4 v, X while(iterator.hasNext()){
7 V2 i) t6 ~. ]0 B2 k" L System.out.println("XXXXXXXXXXXXXXXXXXXXX");+ N0 B/ E0 F! I2 r$ u# I# s
ag1 = (SexAgent)iterator.next();- C3 R# ~' k6 m! G4 S% H! @
if((ag1.sex == FEMALE) 5 W2 k2 g9 ~, c3 i0 j* W
&&(!ag1.isCoupled())){' v% z5 e, c6 q( N6 R6 g6 k* U
System.out.println("YYYYYYYYYYYYYYYYYYYY");9 X/ }: L3 f5 M- a* b' h
potenAgent[goodNumber] = ag1;
1 s/ d1 N/ q: p9 u+ v' L goodNumber ++;
- [. m0 y3 V% P% n. ?. m! a }1 T. c" a! h" `" {1 Q0 `2 G# K F7 l
}- W$ c- e: G2 \* d4 ?8 J3 K6 z" }' r
, t8 \1 t6 T4 T if(goodNumber >0){- e( J" `0 c$ n" p8 y
System.out.println("ZZZZZZZZZZZZZZZZZZZZZZZZZZZZ"); + s. z5 d5 f" q' l0 i2 c9 N5 F$ ~" D
Random rd1 = new Random();
5 f3 b h+ S8 d, z. T" S) t int select = rd1.nextInt(goodNumber);. W* K- l1 G( V! E# Q% a
potentialParterner = potenAgent[select];
) o8 v+ u4 |, l z& ?6 `- N value = true;* Q8 z+ n& |" ?
}
$ {$ B# B+ U0 p; F4 S return value;
% g0 q- i4 A7 S+ H; k7 c a3 K9 J }+ K' [% Z9 {1 d! z8 H8 @
始终只能打印出XXXXXXXXXXXXXXXXXXXX,请各位帮帮忙。 |
|