|
5仿真币
最近做流行病模型,需要在一个网格里面放多个Agent,我查了一下API,使用OrderedMultiGrid类来构造,里面提供了一些putObjectAt(int, int, index);之类的东西。似乎可以用。但是当我编程调试的时候发现在同一位置只能获取一个对象。这是很令人纳闷的事情。我想问一下Repast有提供什么好方法处理吗,不仅要能存进去,还要能方便的拿出来。2 f- U4 `0 b) w0 l" m& r5 C
private boolean findPotentialPartner(){+ R, |# U+ [" \, m0 k4 l
boolean value = false;
' B A: C/ r- i ~
* N1 [& }& p: @5 ~: D0 m, ^ OrderedMulti2DGrid grid = space.getCurrentAgentSpace();4 C7 o; h h9 n! O5 i% q
Iterator iterator = grid.getIteratorAt(x, y);
, K9 ?. |# o& A* h/ \) ?/ J) D SexAgent ag1 = null;
) x, b9 ?3 O" Y3 n. w SexAgent [] potenAgent = new SexAgent[20];4 g$ L( C7 {2 W2 T1 w5 N. Y
int goodNumber = 0;3 a! Y! e4 H ?) c, L3 U5 l0 a
while(iterator.hasNext()){/ @; N" E0 t: D8 @% D+ c% U
System.out.println("XXXXXXXXXXXXXXXXXXXXX");/ ^! P4 V, S- u6 c! O- [. A
ag1 = (SexAgent)iterator.next();
+ B* m" w! [( X i if((ag1.sex == FEMALE) 7 y' X1 m) f% K7 J- Y/ ]0 u1 n9 I; u, X
&&(!ag1.isCoupled())){ ?- T9 g! V4 q; l% a* |0 O9 ~' K0 J
System.out.println("YYYYYYYYYYYYYYYYYYYY");1 `6 W7 @- g& z5 i; V' y- [4 [
potenAgent[goodNumber] = ag1;
* `# p4 m" l5 i9 P) h, Y" b goodNumber ++;
, o8 O; ]- |! \1 k, t. B }
2 Q* c4 C, N W$ s }0 Q# C. m9 A1 H# T
! J7 S5 U( A) V' D- k
if(goodNumber >0){
0 R0 f* |+ `" l( z; N. E System.out.println("ZZZZZZZZZZZZZZZZZZZZZZZZZZZZ"); % i8 w% L: g$ r3 I
Random rd1 = new Random();
3 J3 w& O' Q3 ~+ [2 k5 l' f int select = rd1.nextInt(goodNumber);# x$ F p8 J0 l* K1 K# I
potentialParterner = potenAgent[select];
" m8 U. w' C( h |6 h0 ` value = true;
6 u. t: h: M* u$ h2 N }8 t1 A5 A) Q9 m% m
return value;
. Z0 V8 z; E: [" i. Q2 } } W" M7 K4 a( Z* j
始终只能打印出XXXXXXXXXXXXXXXXXXXX,请各位帮帮忙。 |
|