|
|
5仿真币
最近做流行病模型,需要在一个网格里面放多个Agent,我查了一下API,使用OrderedMultiGrid类来构造,里面提供了一些putObjectAt(int, int, index);之类的东西。似乎可以用。但是当我编程调试的时候发现在同一位置只能获取一个对象。这是很令人纳闷的事情。我想问一下Repast有提供什么好方法处理吗,不仅要能存进去,还要能方便的拿出来。5 I. m' [6 r7 d, f! a" `% O
private boolean findPotentialPartner(){3 e* h. K9 ]' O4 L; {3 ~9 V
boolean value = false;
1 `$ g" y& E& V% F / ~2 Y Y. n* @" Y! G
OrderedMulti2DGrid grid = space.getCurrentAgentSpace();/ F0 P8 @, _& S, k+ o
Iterator iterator = grid.getIteratorAt(x, y);, q u i$ C. U, A: i
SexAgent ag1 = null;
5 E0 H; _% i; C* @1 V2 Z SexAgent [] potenAgent = new SexAgent[20];' m! n* z4 D6 @& P
int goodNumber = 0; e9 F# x, Q$ ^, |$ \, |# B! q) R
while(iterator.hasNext()){
# Y, ^0 O, {1 ^1 a System.out.println("XXXXXXXXXXXXXXXXXXXXX");
0 u% N2 N- F2 N ag1 = (SexAgent)iterator.next();- ^7 X( [* D8 P/ g& X3 |
if((ag1.sex == FEMALE) ) B& h0 s$ N7 N8 C3 ^
&&(!ag1.isCoupled())){
t: w) B0 D1 r/ l; I System.out.println("YYYYYYYYYYYYYYYYYYYY");( o2 z5 p- x$ p! D, R
potenAgent[goodNumber] = ag1;
! j7 E$ L1 h+ b- i; [ goodNumber ++;
/ G0 i+ A7 b( K' c }. ]1 _% z9 X& g1 ~
}) [- l4 I& R7 X; E$ D3 \, b
, G7 g5 T5 e; `5 Z# l
if(goodNumber >0){5 ^ a5 Z9 q; a3 C, `0 i
System.out.println("ZZZZZZZZZZZZZZZZZZZZZZZZZZZZ"); - |2 P1 L! N; w1 l1 x) r
Random rd1 = new Random();
+ I- L+ w! x: S; x: p int select = rd1.nextInt(goodNumber);
, ]( m( O% r* @7 S, D potentialParterner = potenAgent[select];
6 @# Y% {6 G* K value = true;
' e7 W3 F2 O9 u1 B' t0 J! B: y }
7 Q. Y' }. o3 S [7 h$ Q, p" S return value;& A( n" j* Y% ]$ T" H9 u, Z1 z
}9 n/ g" d6 Q/ F. W9 }4 f
始终只能打印出XXXXXXXXXXXXXXXXXXXX,请各位帮帮忙。 |
|