|
|
5仿真币
最近做流行病模型,需要在一个网格里面放多个Agent,我查了一下API,使用OrderedMultiGrid类来构造,里面提供了一些putObjectAt(int, int, index);之类的东西。似乎可以用。但是当我编程调试的时候发现在同一位置只能获取一个对象。这是很令人纳闷的事情。我想问一下Repast有提供什么好方法处理吗,不仅要能存进去,还要能方便的拿出来。2 B$ I5 ~( L( J/ ?5 ]
private boolean findPotentialPartner(){2 I% E! p& E2 P) n% K
boolean value = false;) d; W2 Q1 w, G% i
9 K9 K1 v' P) p! x
OrderedMulti2DGrid grid = space.getCurrentAgentSpace();
( N, p; V1 S4 ]/ V. {5 a7 U' {3 b Iterator iterator = grid.getIteratorAt(x, y);( r, s6 g: x( B* r) f- o* U
SexAgent ag1 = null;
% x4 n: u3 i6 H6 [ SexAgent [] potenAgent = new SexAgent[20];
) C/ s+ M; O/ I3 e9 U- z int goodNumber = 0;
1 M+ }! p) u# ^: m. H: d/ x6 I while(iterator.hasNext()){) t( L- n6 ]& ^# f7 d/ y
System.out.println("XXXXXXXXXXXXXXXXXXXXX");
' c& O: }( R6 C6 G4 f5 p$ [ ag1 = (SexAgent)iterator.next();9 b3 }1 `) Y) q/ x* q* M2 D+ m
if((ag1.sex == FEMALE)
' I3 Y$ b8 r3 ~, Y1 m1 _ &&(!ag1.isCoupled())){7 e/ |2 }0 u+ f. ?
System.out.println("YYYYYYYYYYYYYYYYYYYY");: V7 o% i( ^. ^1 {$ K, S( d5 S* Q
potenAgent[goodNumber] = ag1;
5 }1 {! a5 R0 w8 X2 D, s3 ?. m! C goodNumber ++;
5 L2 n2 K* z* v9 g0 X, u: p }
$ {# t1 C1 {& y, n2 M }
( T# N4 }! U9 F% e9 j. u ! _" x5 I" h) r& X1 Q( c6 n$ |4 b
if(goodNumber >0){
; b9 q; V! i& h: X6 B* B6 j4 k System.out.println("ZZZZZZZZZZZZZZZZZZZZZZZZZZZZ"); $ P6 E# |1 }7 w/ B
Random rd1 = new Random();7 p3 O" n( y: k7 e6 x2 z1 q
int select = rd1.nextInt(goodNumber);. r y* u) Z& z2 M7 n
potentialParterner = potenAgent[select];; R. F: Y5 |$ |! B2 z, a4 y, [. Q& U$ W
value = true;' l# q5 s7 H& l/ E, G
}
" ?3 u2 I; s, |9 E+ K! v return value;' v. _, r/ p+ P6 U; p
}
) W$ |+ A. T9 u# S" J! X始终只能打印出XXXXXXXXXXXXXXXXXXXX,请各位帮帮忙。 |
|