|
|
5仿真币
最近做流行病模型,需要在一个网格里面放多个Agent,我查了一下API,使用OrderedMultiGrid类来构造,里面提供了一些putObjectAt(int, int, index);之类的东西。似乎可以用。但是当我编程调试的时候发现在同一位置只能获取一个对象。这是很令人纳闷的事情。我想问一下Repast有提供什么好方法处理吗,不仅要能存进去,还要能方便的拿出来。- i N5 z" v# b) O+ c( M; t# X) K* S
private boolean findPotentialPartner(){1 f* Z2 I {9 D' k$ |
boolean value = false;
" V2 J' j5 X$ l ) o! W. E7 J: k
OrderedMulti2DGrid grid = space.getCurrentAgentSpace();
t& u, R" k% e- T% w) k! u Iterator iterator = grid.getIteratorAt(x, y);
: R4 K6 E0 x9 D, W SexAgent ag1 = null;
& @ f( f$ H& B: B SexAgent [] potenAgent = new SexAgent[20];+ [. G$ N" O/ ^8 [5 R2 b0 }- l( K
int goodNumber = 0;5 Q! n2 a7 W6 b; \8 A
while(iterator.hasNext()){
* F. A* B: T+ l/ _* l System.out.println("XXXXXXXXXXXXXXXXXXXXX");
/ y C+ d4 r5 p) i ag1 = (SexAgent)iterator.next();% ^" q. @% v$ h$ i+ E
if((ag1.sex == FEMALE)
+ n+ C7 F0 W1 |% R' e. |( | &&(!ag1.isCoupled())){
9 B, C5 r8 Q, H4 N3 v& A; d System.out.println("YYYYYYYYYYYYYYYYYYYY");
" H, T' b5 N8 [; P) L, Y& z$ [1 | potenAgent[goodNumber] = ag1;; s- _/ k$ y9 k$ Q: o( m
goodNumber ++;
" w: G- e8 `1 Z' A" K# m8 w& x/ y+ ~ }. x1 {6 G& n1 Z$ v, b
}
# l% z+ }/ H% r5 u
& R5 Y& _ T( I$ _+ ]) _4 G if(goodNumber >0){
. K8 r/ F Z* n) v System.out.println("ZZZZZZZZZZZZZZZZZZZZZZZZZZZZ");
0 b3 B* Z1 U3 u( [9 g Random rd1 = new Random();& n3 i/ N* q9 K
int select = rd1.nextInt(goodNumber);
+ d, u& L I4 X7 y0 } potentialParterner = potenAgent[select];
; l# N% h# x3 f3 s& z( }0 g value = true;
1 n6 @; m/ Q1 j' e+ [, p" { }
; g+ m; @: c9 [5 ?2 S8 P3 A return value;! b% Z2 f5 n# B" g; @6 M8 x z
}
( M7 s+ H" q. ?0 h D7 u# o# I/ z. ~始终只能打印出XXXXXXXXXXXXXXXXXXXX,请各位帮帮忙。 |
|