|
|
5仿真币
最近做流行病模型,需要在一个网格里面放多个Agent,我查了一下API,使用OrderedMultiGrid类来构造,里面提供了一些putObjectAt(int, int, index);之类的东西。似乎可以用。但是当我编程调试的时候发现在同一位置只能获取一个对象。这是很令人纳闷的事情。我想问一下Repast有提供什么好方法处理吗,不仅要能存进去,还要能方便的拿出来。
! }, s& d' D6 ~% d! E private boolean findPotentialPartner(){
0 X1 Z3 Q6 ?, e8 { boolean value = false;
: _& {) h4 H% {0 u' t : r- t5 Y$ v- D, A; R6 Z
OrderedMulti2DGrid grid = space.getCurrentAgentSpace();# C' d' Z0 }/ E1 {: b
Iterator iterator = grid.getIteratorAt(x, y);
1 B7 s& A" o1 P( r# v' X: |+ C' q SexAgent ag1 = null; 4 U g) Y; {7 e& K r1 T" b: n8 \
SexAgent [] potenAgent = new SexAgent[20]; k0 u% A1 c2 N0 H9 c) S/ s' h* m* T3 ]6 J
int goodNumber = 0;0 a7 u' d' _; D4 r3 }
while(iterator.hasNext()){ l7 q7 M& X) S8 [! D s
System.out.println("XXXXXXXXXXXXXXXXXXXXX");
- n! O" O3 G4 {5 t8 M ag1 = (SexAgent)iterator.next();
7 c6 @; q6 v0 E5 w if((ag1.sex == FEMALE) l' x' G. V! b8 z: \( x1 ^9 z6 Y
&&(!ag1.isCoupled())){0 L+ T g$ i# e
System.out.println("YYYYYYYYYYYYYYYYYYYY");0 j$ i9 G" f- E) d& b8 ^9 P8 W
potenAgent[goodNumber] = ag1;
. P0 @ ^: k, f' S1 o! W goodNumber ++;
G: A1 k, F3 \5 X& o0 E. E }0 j: S7 |' i& q
}( ]8 @/ E ]7 W6 P
2 Y6 ]4 a8 _' B% h* T! V
if(goodNumber >0){# [, P! J5 {( X4 Z8 [- D' J
System.out.println("ZZZZZZZZZZZZZZZZZZZZZZZZZZZZ");
% B% q3 G+ d' r8 `, C) |$ u Random rd1 = new Random();
/ G9 v& i/ D; [& L3 P int select = rd1.nextInt(goodNumber);
. ]5 Q, v- G: F* y potentialParterner = potenAgent[select];
3 f) S9 ]# z, _( T value = true;
: [+ b8 z' @$ b+ [+ D0 B }
c+ I' c- G; E: R2 a: o return value;
% r0 n/ r1 l2 r6 J& w }
e/ z. e; \ t' s始终只能打印出XXXXXXXXXXXXXXXXXXXX,请各位帮帮忙。 |
|