|
5仿真币
最近做流行病模型,需要在一个网格里面放多个Agent,我查了一下API,使用OrderedMultiGrid类来构造,里面提供了一些putObjectAt(int, int, index);之类的东西。似乎可以用。但是当我编程调试的时候发现在同一位置只能获取一个对象。这是很令人纳闷的事情。我想问一下Repast有提供什么好方法处理吗,不仅要能存进去,还要能方便的拿出来。
: t) n+ D+ @. I+ v$ p/ L& @ private boolean findPotentialPartner(){
, J9 s+ m3 @6 N, Y* C5 `, T4 Z boolean value = false;
4 E6 h' ` L# D# j% K6 n* n
; h% e+ }) B* d OrderedMulti2DGrid grid = space.getCurrentAgentSpace();
j- D- Z% c2 s' c) H" j Iterator iterator = grid.getIteratorAt(x, y);9 ?" J; f' E$ S" c" w; r5 } n# ^
SexAgent ag1 = null;
$ E/ u0 I) @) ^$ }& Z7 l6 ? SexAgent [] potenAgent = new SexAgent[20];
' ?& i& {# V5 x1 r% [ int goodNumber = 0;0 F* q9 y' g H# x, w( I
while(iterator.hasNext()){3 Y4 c& c, @7 W3 Q7 m k- `5 a
System.out.println("XXXXXXXXXXXXXXXXXXXXX");% Q' b; a u- z( [# |: a" P
ag1 = (SexAgent)iterator.next();. x0 [! w: w/ j
if((ag1.sex == FEMALE) 8 {" T% @5 u8 v; }% X# K% ?, j) j
&&(!ag1.isCoupled())){
& Q. I* J! F' X0 S System.out.println("YYYYYYYYYYYYYYYYYYYY");! B; D8 d5 z7 E3 [ [) ^
potenAgent[goodNumber] = ag1;+ q9 N1 a. S( N
goodNumber ++;& Q+ _' M# b3 Y/ f2 j$ w4 \ p1 o
}" D! S7 ~0 Z( ?$ Y
}6 G$ i9 Y6 J# n/ z4 s1 R
' {& A1 p4 H4 W; H( g& i if(goodNumber >0){/ W7 h4 e7 W) @! ]2 ~+ ^
System.out.println("ZZZZZZZZZZZZZZZZZZZZZZZZZZZZ");
, R$ t" e' S# W/ z/ U" x Random rd1 = new Random();& @: P. `, n, x# p9 W5 S
int select = rd1.nextInt(goodNumber);
5 h0 [2 \( }" \1 j1 z potentialParterner = potenAgent[select];
/ S9 ^8 z8 q. h; ^7 p# ~% ^ value = true;
" F- A' f5 e' F" d! u( o' {( o }; s/ i1 v. Z0 a6 {4 G
return value;
3 v# w+ J, ]! K+ T# J- B- Y! W, A }* L0 p( s6 O/ W5 K+ x* \
始终只能打印出XXXXXXXXXXXXXXXXXXXX,请各位帮帮忙。 |
|