|
|
5仿真币
最近做流行病模型,需要在一个网格里面放多个Agent,我查了一下API,使用OrderedMultiGrid类来构造,里面提供了一些putObjectAt(int, int, index);之类的东西。似乎可以用。但是当我编程调试的时候发现在同一位置只能获取一个对象。这是很令人纳闷的事情。我想问一下Repast有提供什么好方法处理吗,不仅要能存进去,还要能方便的拿出来。
% A4 r. r% i8 Y/ w private boolean findPotentialPartner(){
4 j+ [& V) |! X6 k" i boolean value = false;
( X2 W# o2 R2 g* W' L
9 e R2 f' T3 m$ D L; \7 V OrderedMulti2DGrid grid = space.getCurrentAgentSpace();5 m+ e& H4 h- c$ z# P
Iterator iterator = grid.getIteratorAt(x, y);
% O% v6 U" D/ j# s5 Y& V, L SexAgent ag1 = null;
# F7 f( C3 F* L: V* }: c" b SexAgent [] potenAgent = new SexAgent[20];
1 w) r$ I3 l/ z- U2 m5 G int goodNumber = 0;+ E' ]8 }1 O9 `% O, i
while(iterator.hasNext()){
2 i1 d: |6 x5 E8 W/ c& e System.out.println("XXXXXXXXXXXXXXXXXXXXX");
1 w: `3 z! R! \. P ag1 = (SexAgent)iterator.next();
# }) z9 Y8 Q8 P) U& s- j' J if((ag1.sex == FEMALE)
, M, `" O! H* w& P9 h &&(!ag1.isCoupled())){3 c# z" V% r! r# j5 h8 X; b
System.out.println("YYYYYYYYYYYYYYYYYYYY");
6 C+ J* W. f: K potenAgent[goodNumber] = ag1;/ v5 l9 K6 ] P( a( |5 k
goodNumber ++;
! B- V" }6 M2 z" X }; w, v, ?) r" @1 R! L+ d
}
0 l! ^- ?$ g4 I! s4 B
* q# P, P2 ~0 v, q3 M! A2 m if(goodNumber >0){# N7 s4 @, k7 ?/ C% G
System.out.println("ZZZZZZZZZZZZZZZZZZZZZZZZZZZZ");
" Z6 ? n/ ~5 W; Q Random rd1 = new Random();
, v$ [& j9 M9 L4 E* P3 S/ m3 [" } int select = rd1.nextInt(goodNumber);
2 `: G4 o! x/ d* e( N/ y8 v potentialParterner = potenAgent[select];
' L+ S' K0 T7 c% ~# J5 t' { value = true;5 t0 ^# Z5 Y1 A3 L& s
}# Z6 e& d( P* Z2 _% v3 e$ `
return value;
+ M+ k5 A: |4 G" ^6 V' [ r( i }* q- b2 ~4 Y" U
始终只能打印出XXXXXXXXXXXXXXXXXXXX,请各位帮帮忙。 |
|