|
|
5仿真币
最近做流行病模型,需要在一个网格里面放多个Agent,我查了一下API,使用OrderedMultiGrid类来构造,里面提供了一些putObjectAt(int, int, index);之类的东西。似乎可以用。但是当我编程调试的时候发现在同一位置只能获取一个对象。这是很令人纳闷的事情。我想问一下Repast有提供什么好方法处理吗,不仅要能存进去,还要能方便的拿出来。1 V9 h ]( O8 O. p/ T
private boolean findPotentialPartner(){( _5 |( J, s. t* M0 {6 W; c, n
boolean value = false;
1 g9 G i8 Y2 D9 M6 u3 V2 s0 [5 b m- J. }4 J7 Z* Q3 |. X0 i
OrderedMulti2DGrid grid = space.getCurrentAgentSpace();' r: T* V/ x3 p& S8 Z4 z
Iterator iterator = grid.getIteratorAt(x, y);
2 Y* X* I$ k z; y# z) c5 ~ SexAgent ag1 = null;
" V6 A S; B- @ SexAgent [] potenAgent = new SexAgent[20];
% g* y6 [2 N+ j) @! @5 a( Z int goodNumber = 0;
: S3 S7 j5 I# s' S while(iterator.hasNext()){8 m' D" J4 ~0 ^ J& c! U
System.out.println("XXXXXXXXXXXXXXXXXXXXX");- k1 ?" a( _3 S( k! m( U' Y
ag1 = (SexAgent)iterator.next();8 G- v4 L; v+ f8 u* ^; A& I+ V' }
if((ag1.sex == FEMALE)
* @% y% i% ?* x+ }- o( j &&(!ag1.isCoupled())){# R6 J9 ^5 O/ f8 U \
System.out.println("YYYYYYYYYYYYYYYYYYYY");* G8 M. {0 x# ]& t5 n' f/ U. U
potenAgent[goodNumber] = ag1;
( N; k7 J1 m" P3 o. C4 b/ Y d goodNumber ++;
% N* b; h& U+ Y" a7 q }
) S n3 {" P$ Z& n1 t }" H8 p7 S; g" }" m/ ^, v
5 r! y+ J: t* s8 E- H if(goodNumber >0){7 x2 X' f1 R% C& U' L$ e0 L
System.out.println("ZZZZZZZZZZZZZZZZZZZZZZZZZZZZ");
) o. d# A( C {! ^0 u2 L Random rd1 = new Random();
4 H! w- m8 u1 v- r* B3 x4 N& ^ int select = rd1.nextInt(goodNumber);
, X" Q; n, E3 b& \& O8 J2 { potentialParterner = potenAgent[select];+ ]1 Q& A, k7 K: _
value = true;
, O+ v9 u! a ^* t7 C }: v2 B+ @+ ~ J9 K8 N: |+ y8 v
return value;
* u, V) ~4 ?" o" S }
3 \- Y' a" I4 _* a# A" t始终只能打印出XXXXXXXXXXXXXXXXXXXX,请各位帮帮忙。 |
|