|
|
5仿真币
最近做流行病模型,需要在一个网格里面放多个Agent,我查了一下API,使用OrderedMultiGrid类来构造,里面提供了一些putObjectAt(int, int, index);之类的东西。似乎可以用。但是当我编程调试的时候发现在同一位置只能获取一个对象。这是很令人纳闷的事情。我想问一下Repast有提供什么好方法处理吗,不仅要能存进去,还要能方便的拿出来。. P- k; T& S( y" y2 ~/ i
private boolean findPotentialPartner(){' m: v R! r- \) R* U/ A- K
boolean value = false;
% a/ H1 @! I$ ]: j( g
/ G; ~8 }& {* ^& B& ?' q x7 o$ h OrderedMulti2DGrid grid = space.getCurrentAgentSpace();# F7 K3 x" C) U7 p m |
Iterator iterator = grid.getIteratorAt(x, y);% P# ?( Z& n/ E) Y- h8 A
SexAgent ag1 = null;
0 z8 ~. C* i3 y* D+ k% ]- ]; u p SexAgent [] potenAgent = new SexAgent[20];
7 Y; `' e; A) C. W int goodNumber = 0;& U3 b% `) l. `1 i9 L0 r+ c
while(iterator.hasNext()){
& V- n2 p3 l# _ System.out.println("XXXXXXXXXXXXXXXXXXXXX");
9 }4 D) U9 n( O" b ag1 = (SexAgent)iterator.next();
" M3 i; `( T" t! J! w if((ag1.sex == FEMALE)
. P7 @& a5 G0 V. F( x* ] &&(!ag1.isCoupled())){/ M$ Z" `& c N
System.out.println("YYYYYYYYYYYYYYYYYYYY");
- e4 z1 G& J' p potenAgent[goodNumber] = ag1;+ L; M0 M/ a* f% @8 L& z9 v
goodNumber ++;% g3 ?/ B/ u( [4 o @7 V
}
( f; D+ j. |- ~- [ }
2 r, X5 r% ~* R* X5 ?
/ t8 d* o9 G/ g; Y if(goodNumber >0){
% e$ Z- o0 h1 W3 K/ j* Z System.out.println("ZZZZZZZZZZZZZZZZZZZZZZZZZZZZ"); # w# ] i* P+ x& B% m/ h, b
Random rd1 = new Random();
6 F: ?0 C( Q+ e int select = rd1.nextInt(goodNumber);% Y; d, K+ ]: L8 A) F
potentialParterner = potenAgent[select];
1 t1 G7 f( P4 y6 [7 y* i* j- Q, B value = true;
4 N/ \3 A: x8 K/ {# O! y1 V ^1 ` }
5 R4 v/ D E { ]4 @. i' U6 F6 X1 R- J& U return value;
0 ~7 J3 \; ^1 ]% A+ A! I }9 i) |) `, `6 f7 ~# N8 j7 c
始终只能打印出XXXXXXXXXXXXXXXXXXXX,请各位帮帮忙。 |
|