|
|
5仿真币
最近做流行病模型,需要在一个网格里面放多个Agent,我查了一下API,使用OrderedMultiGrid类来构造,里面提供了一些putObjectAt(int, int, index);之类的东西。似乎可以用。但是当我编程调试的时候发现在同一位置只能获取一个对象。这是很令人纳闷的事情。我想问一下Repast有提供什么好方法处理吗,不仅要能存进去,还要能方便的拿出来。
, r# w- g7 L# k; x8 B private boolean findPotentialPartner(){
* C, R# p2 z- ^ \, [, N boolean value = false;
5 ?1 C$ P4 B S 8 E2 |) u6 L _8 c. b
OrderedMulti2DGrid grid = space.getCurrentAgentSpace();( e3 E6 ^9 f i$ a
Iterator iterator = grid.getIteratorAt(x, y);
) _8 Z$ K) \# s r" _3 U- T SexAgent ag1 = null; 6 v5 |7 I/ [2 S7 X8 l$ p
SexAgent [] potenAgent = new SexAgent[20];! C) H* l4 E3 h7 H* d# }8 O
int goodNumber = 0;
6 y3 a! M/ b6 A6 c i: B while(iterator.hasNext()){0 j; ?" d [8 o* R3 t
System.out.println("XXXXXXXXXXXXXXXXXXXXX");
; {. q8 ^% t: S ag1 = (SexAgent)iterator.next();/ K: k3 _' s- C! Y+ _3 s) V
if((ag1.sex == FEMALE) / N( Z6 k; t, c5 n& L1 @; b
&&(!ag1.isCoupled())){$ A* H& V9 }' H+ O7 L8 n# |) R
System.out.println("YYYYYYYYYYYYYYYYYYYY");
2 `$ k7 z' B7 y) I7 [6 n$ X) D- X potenAgent[goodNumber] = ag1;$ G- c; M! x3 H7 Y4 ^( S
goodNumber ++;
. V9 N7 B/ w4 N8 q1 o }0 @( v7 x$ v2 @
}2 a" I& d" z9 P7 u3 e3 ?
# U: V9 ?+ x, K& l- o: @
if(goodNumber >0){
# d1 K9 E, \, K o/ _3 k, ]) z System.out.println("ZZZZZZZZZZZZZZZZZZZZZZZZZZZZ");
/ @( p$ L$ T% ] ~0 x2 N: D6 U Random rd1 = new Random();
: d- R9 M0 C3 U/ z% U, ]& T0 [. N int select = rd1.nextInt(goodNumber);3 |; X" ~2 o C3 ]1 K
potentialParterner = potenAgent[select];
/ t: O- K q& T( h4 ~1 T value = true;
8 X* k' F! C* }8 x& Q, s w8 P }8 ^! I, x; _7 l$ d0 K- {6 r, m+ T
return value;
( ?- }! ~( u+ G& v { }
% n' g8 f- T* Z! d始终只能打印出XXXXXXXXXXXXXXXXXXXX,请各位帮帮忙。 |
|