|
|
5仿真币
最近做流行病模型,需要在一个网格里面放多个Agent,我查了一下API,使用OrderedMultiGrid类来构造,里面提供了一些putObjectAt(int, int, index);之类的东西。似乎可以用。但是当我编程调试的时候发现在同一位置只能获取一个对象。这是很令人纳闷的事情。我想问一下Repast有提供什么好方法处理吗,不仅要能存进去,还要能方便的拿出来。, K3 ?* w0 O! |
private boolean findPotentialPartner(){ B2 x' n. T, P- J
boolean value = false;
4 D6 s8 d+ S3 C( m
# P' F5 k0 L; |6 s6 t OrderedMulti2DGrid grid = space.getCurrentAgentSpace();
* k n( c! T h; }7 l' I6 N Iterator iterator = grid.getIteratorAt(x, y);" d5 Q" @+ f. h* W! K% h' `
SexAgent ag1 = null;
" F6 v& G& _' W6 [/ _ SexAgent [] potenAgent = new SexAgent[20];) U' g( ]' \3 w% r3 [* i$ f
int goodNumber = 0;
6 c" q! J( B, d# {, t while(iterator.hasNext()){
* i: }$ k, R M; t5 T! ^: c; c2 ? System.out.println("XXXXXXXXXXXXXXXXXXXXX");
7 a7 t( d2 h# i& e# u9 r ag1 = (SexAgent)iterator.next();7 {3 r( I( g; H8 V3 _6 u0 }+ v& s1 ?
if((ag1.sex == FEMALE) " Q- R4 J$ K9 B) p! x" }" L6 {
&&(!ag1.isCoupled())){
( N T- h0 U9 L8 k P* t System.out.println("YYYYYYYYYYYYYYYYYYYY");! J4 T4 M' n, p
potenAgent[goodNumber] = ag1;
3 N+ r. q. o. L# W# \4 s goodNumber ++;4 T. J: D5 F# l4 V- r! z
}! i4 P% K6 E/ R8 ~7 }2 H& W
}
4 i. |& Q8 o# |) B3 t+ I! S) c
( N" m: y8 u3 b/ C( f if(goodNumber >0){, q( r8 I+ v' l5 F1 Q: r
System.out.println("ZZZZZZZZZZZZZZZZZZZZZZZZZZZZ");
( z& ^( C! }( E( V' k7 \1 R Random rd1 = new Random();7 ~, L( }3 S& y, o g0 M
int select = rd1.nextInt(goodNumber);. l' n" v4 c+ Z5 j; r
potentialParterner = potenAgent[select];2 a% `5 e' O1 M8 X# G
value = true;
; y& z+ ]9 _- h0 G7 x/ ?; R }
5 y. u$ Z% q* s. l& \ return value;
2 ^2 j& M3 L) H4 { }
" }* B! \) ~( f' T1 b& b+ @ H始终只能打印出XXXXXXXXXXXXXXXXXXXX,请各位帮帮忙。 |
|