|
|
5仿真币
最近做流行病模型,需要在一个网格里面放多个Agent,我查了一下API,使用OrderedMultiGrid类来构造,里面提供了一些putObjectAt(int, int, index);之类的东西。似乎可以用。但是当我编程调试的时候发现在同一位置只能获取一个对象。这是很令人纳闷的事情。我想问一下Repast有提供什么好方法处理吗,不仅要能存进去,还要能方便的拿出来。 x; b1 ]. V2 \5 k- } |" ]; F! J% y
private boolean findPotentialPartner(){ R5 i- J4 z9 K9 u" Q
boolean value = false;
# s2 S: I3 N& A& L" o2 w , |& n+ S% e( G( S8 o' h: f
OrderedMulti2DGrid grid = space.getCurrentAgentSpace();: d( U5 u* p& {$ c8 [: f
Iterator iterator = grid.getIteratorAt(x, y);
h4 K# K! T5 O$ Q: i SexAgent ag1 = null; V" e0 K1 V( n8 R. J. V8 B
SexAgent [] potenAgent = new SexAgent[20];
) x) I8 `! a+ O4 P: U int goodNumber = 0;0 H( D! l( W: Y v8 j" a% A* B
while(iterator.hasNext()){
2 f# d. H6 \& x3 V. W System.out.println("XXXXXXXXXXXXXXXXXXXXX");
/ w% d& w+ D0 c' |7 K$ y2 s ag1 = (SexAgent)iterator.next();+ l4 Z( T9 t3 B1 }; K8 ]. ?- O
if((ag1.sex == FEMALE)
* N7 l9 a: \9 E- X8 _. r* p &&(!ag1.isCoupled())){% {, n/ O# I6 G$ f" }: ?" j
System.out.println("YYYYYYYYYYYYYYYYYYYY");, x) {9 R. M( P6 o. N( _ p
potenAgent[goodNumber] = ag1;
t9 b9 z4 V: l9 W' d/ F goodNumber ++;/ \0 y9 S* Q. d8 d* S
}: {9 D# |- p. H9 e. {8 ^0 ]( S
}4 B u% |/ a7 @$ q1 G
" T- o9 C+ i, c" Y+ J6 X2 c) o1 n if(goodNumber >0){
6 G! j r( g" \/ Y0 X+ q k& F) u: Y System.out.println("ZZZZZZZZZZZZZZZZZZZZZZZZZZZZ"); 3 s V. K% W& v I0 Y" h. I6 ^
Random rd1 = new Random();
- [) m, a0 }5 o4 N! [7 j int select = rd1.nextInt(goodNumber);
" X( |' P5 h0 N potentialParterner = potenAgent[select];3 a9 k+ Z% I3 C9 w" X
value = true;
% ` N2 L2 ~* p5 \3 t }) m3 F: A1 X; i* c, [" m, [
return value;
" ~5 p; B" L( }! J7 K/ U }
* m p5 T" G/ B# S' v始终只能打印出XXXXXXXXXXXXXXXXXXXX,请各位帮帮忙。 |
|