|
|
5仿真币
最近做流行病模型,需要在一个网格里面放多个Agent,我查了一下API,使用OrderedMultiGrid类来构造,里面提供了一些putObjectAt(int, int, index);之类的东西。似乎可以用。但是当我编程调试的时候发现在同一位置只能获取一个对象。这是很令人纳闷的事情。我想问一下Repast有提供什么好方法处理吗,不仅要能存进去,还要能方便的拿出来。1 U/ w2 `% J* Z; ?
private boolean findPotentialPartner(){8 F& g; T( G" s# A
boolean value = false;
9 W. G9 j" q/ u/ Z; \+ I$ h+ k. [ # h! l2 q' t' q) k% e* m
OrderedMulti2DGrid grid = space.getCurrentAgentSpace();% F: p9 J+ x2 J/ H0 D: i
Iterator iterator = grid.getIteratorAt(x, y);, S' _& o0 n( k& m# E8 f
SexAgent ag1 = null;
( Z+ W/ H( @* |, X: E @3 s SexAgent [] potenAgent = new SexAgent[20];
7 N% X) I+ [' }- N2 Q8 M, \ J int goodNumber = 0;
. L7 y8 R2 S- O# X! ~ while(iterator.hasNext()){
/ p6 P6 z6 a3 i9 g6 f+ S' v" l, U System.out.println("XXXXXXXXXXXXXXXXXXXXX");6 D1 }" v- \5 U# n
ag1 = (SexAgent)iterator.next();
- R3 r1 ^/ F9 Q if((ag1.sex == FEMALE)
! x, D* Z( W* I4 b L" m7 | &&(!ag1.isCoupled())){, v& j3 M4 R! |
System.out.println("YYYYYYYYYYYYYYYYYYYY");
( j& [- p [) q* ~. T8 s1 c% u potenAgent[goodNumber] = ag1;" h7 X1 d6 i1 q% a7 ?
goodNumber ++;3 Q4 X$ F d2 P# h2 W+ f1 U m7 d* {
}
7 k) V9 o8 r$ F4 m$ u }
' b# R" w2 C9 s 9 V% J) ]4 Z( X, v) `
if(goodNumber >0){
2 m5 y4 d, w. R, J6 N$ R System.out.println("ZZZZZZZZZZZZZZZZZZZZZZZZZZZZ");
_. F) p+ \% c% j" S Random rd1 = new Random();1 B* z/ k8 c& w) n" j1 W' P
int select = rd1.nextInt(goodNumber);% ~1 q. k% H& }) `& z
potentialParterner = potenAgent[select];
9 Y1 k$ L0 `0 Y* b value = true;
$ u+ Q& I* P8 h- P }
: g1 P2 w- s+ x: g/ H return value;
! H. X5 u! q" E2 G }
8 C8 N/ r7 ?! H+ V$ y6 y始终只能打印出XXXXXXXXXXXXXXXXXXXX,请各位帮帮忙。 |
|