|
5仿真币
最近做流行病模型,需要在一个网格里面放多个Agent,我查了一下API,使用OrderedMultiGrid类来构造,里面提供了一些putObjectAt(int, int, index);之类的东西。似乎可以用。但是当我编程调试的时候发现在同一位置只能获取一个对象。这是很令人纳闷的事情。我想问一下Repast有提供什么好方法处理吗,不仅要能存进去,还要能方便的拿出来。6 g# T0 m7 H8 j9 J' B
private boolean findPotentialPartner(){
) K i% Y4 B& C' c8 @ boolean value = false;
, D; V) _( ~4 M$ y 6 e* |2 _) a. _5 r( w# p
OrderedMulti2DGrid grid = space.getCurrentAgentSpace();
1 `/ l. |, j+ s Iterator iterator = grid.getIteratorAt(x, y);
, {9 K& g$ b* o SexAgent ag1 = null; 7 B0 \# [$ Y. W' B
SexAgent [] potenAgent = new SexAgent[20];% R' y2 S% ^3 T( F& }8 q4 w$ @, }1 i
int goodNumber = 0;2 ^3 {- e) R8 ^
while(iterator.hasNext()){ b8 h/ X e& }7 U
System.out.println("XXXXXXXXXXXXXXXXXXXXX");2 ?" K! ]$ q9 X4 s( T
ag1 = (SexAgent)iterator.next();
3 q1 l* p: H0 { if((ag1.sex == FEMALE)
+ ~$ V, B7 R* r( b B# W &&(!ag1.isCoupled())){
# B7 h* w3 O; ?; M System.out.println("YYYYYYYYYYYYYYYYYYYY");. u) J. ]7 R- L
potenAgent[goodNumber] = ag1;+ j1 U2 K7 l/ p. y6 O8 i3 N ^
goodNumber ++;( m- ]$ q9 Z7 c3 s. @: y' d- r8 Q
}
f" q3 V; \; E2 Q- E }5 Y& b: D3 _5 ~/ ]7 {8 a# h
* r0 d/ `; }4 y9 }8 b, b* d
if(goodNumber >0){
# @& t' U+ g$ ]( K System.out.println("ZZZZZZZZZZZZZZZZZZZZZZZZZZZZ");
) l9 b3 f0 @: ?, U4 m" w1 M4 k8 a Random rd1 = new Random();5 v5 n6 O, d5 l& [
int select = rd1.nextInt(goodNumber);
) }8 g9 U4 q) i% X; \4 S) H potentialParterner = potenAgent[select]; c3 b! d3 T: P) S1 `* t, b5 v
value = true;2 q, c7 a/ |8 \9 f; ]6 H
}
6 f8 \6 m" H B return value;+ k+ B1 k, v- W" O
}
( `2 I' n( M+ ]/ A. ^1 l# E! _始终只能打印出XXXXXXXXXXXXXXXXXXXX,请各位帮帮忙。 |
|