|
|
5仿真币
最近做流行病模型,需要在一个网格里面放多个Agent,我查了一下API,使用OrderedMultiGrid类来构造,里面提供了一些putObjectAt(int, int, index);之类的东西。似乎可以用。但是当我编程调试的时候发现在同一位置只能获取一个对象。这是很令人纳闷的事情。我想问一下Repast有提供什么好方法处理吗,不仅要能存进去,还要能方便的拿出来。/ N7 i& `0 ~) H3 l& e
private boolean findPotentialPartner(){
8 B; x& P' `4 y* m2 P" N; K3 k7 z boolean value = false;
& K( l5 A, l2 b& q u. X
+ }7 N, G8 D8 K4 R1 ~$ q" R; E OrderedMulti2DGrid grid = space.getCurrentAgentSpace();7 X, Z2 ?8 _1 m: T; V% |+ h
Iterator iterator = grid.getIteratorAt(x, y);
/ x# S1 P) L- L& }; \) {0 s SexAgent ag1 = null; 4 k# h8 { ?, M, ?( F$ G' f1 y4 T# q7 p
SexAgent [] potenAgent = new SexAgent[20];
# A% r5 c+ x3 G. @/ t. s- a int goodNumber = 0;
3 O: l& Z1 J# k$ m& u$ W K while(iterator.hasNext()){0 c q( `6 V! ^$ w- C6 Q' j
System.out.println("XXXXXXXXXXXXXXXXXXXXX");
1 S) u2 c( w; |9 ^, V) F ag1 = (SexAgent)iterator.next();3 C5 ]- L4 p2 w! x, k
if((ag1.sex == FEMALE) ! c x6 p) v+ E- e# S
&&(!ag1.isCoupled())){
' l* {3 _* a: z1 K. a- w3 y System.out.println("YYYYYYYYYYYYYYYYYYYY");6 f1 k) u+ Q: J6 @
potenAgent[goodNumber] = ag1;
* b% G$ I b6 M; _ goodNumber ++;
4 b! e2 z6 ^% _5 V+ m. i+ @+ ] }
/ i+ |6 E2 f0 G, F }
2 w7 P; A1 W A9 C [& G 7 `) a* s. p8 P& b- Z+ N
if(goodNumber >0){* R, a. p' t# H
System.out.println("ZZZZZZZZZZZZZZZZZZZZZZZZZZZZ"); 3 Y4 }1 ]4 V" ?, \+ n: S) i* q; @
Random rd1 = new Random();
% o" @+ M+ \$ L/ L. q int select = rd1.nextInt(goodNumber); r5 q# a9 E; z- i! N/ R
potentialParterner = potenAgent[select];
& K0 K1 E* b! E% l+ } value = true;% L6 n5 q8 I0 {6 Z9 J- X: }" S" m9 s L: X
}
" H: [( w0 O$ G; ` return value;
7 L! J! s1 Z$ M3 S9 E }
6 J! s# N- L$ s; Z始终只能打印出XXXXXXXXXXXXXXXXXXXX,请各位帮帮忙。 |
|