|
|
5仿真币
最近做流行病模型,需要在一个网格里面放多个Agent,我查了一下API,使用OrderedMultiGrid类来构造,里面提供了一些putObjectAt(int, int, index);之类的东西。似乎可以用。但是当我编程调试的时候发现在同一位置只能获取一个对象。这是很令人纳闷的事情。我想问一下Repast有提供什么好方法处理吗,不仅要能存进去,还要能方便的拿出来。
% b' d7 [6 W" p* w+ i/ ]) @% E private boolean findPotentialPartner(){$ ]% _% S$ l' l# d
boolean value = false;
6 H) K3 R# V6 | l1 @
& u- W+ N# e+ s, ]2 x OrderedMulti2DGrid grid = space.getCurrentAgentSpace();
) e. s7 ]$ P/ t Iterator iterator = grid.getIteratorAt(x, y);
1 V. T1 z$ G6 h- U! }0 B3 e SexAgent ag1 = null; ( a) n. f5 \: V! W3 |4 W0 q G
SexAgent [] potenAgent = new SexAgent[20];& A7 D2 Z( K, i
int goodNumber = 0;; X6 J# V. m7 i( K. ~ a
while(iterator.hasNext()){
: M$ s: ]0 Y- V: D! i System.out.println("XXXXXXXXXXXXXXXXXXXXX");! E% b: o% O/ L" l! A3 e+ u
ag1 = (SexAgent)iterator.next();
- t: R( G8 Y; u3 j H. t& e if((ag1.sex == FEMALE)
' {$ F2 o+ i6 K: @# x &&(!ag1.isCoupled())){
3 U) ^# Z! j n* ~0 }% K: N System.out.println("YYYYYYYYYYYYYYYYYYYY");
& L8 p6 V, t$ n: R potenAgent[goodNumber] = ag1;
6 z$ Y) X! J* d" g$ x6 H1 y5 J. w7 s goodNumber ++;
! t3 v% `8 @$ P+ U* E2 V! T* v( `0 X }' h: Z. B* u8 O4 O% @
}
9 {0 C; c& o/ f3 f$ Z6 Z. A/ x
9 C1 o" l7 h, q) w if(goodNumber >0){) t* |+ J$ P O2 \2 I) c
System.out.println("ZZZZZZZZZZZZZZZZZZZZZZZZZZZZ");
* U3 [8 ?4 a5 m& X) Y Random rd1 = new Random();4 k6 h) e- s) }( ^- ]9 Q6 ]
int select = rd1.nextInt(goodNumber);1 M* g- w) ? c6 G: `* n
potentialParterner = potenAgent[select];% `, F4 u1 I r, D9 Q
value = true;! Z0 S/ W* g* F/ ]* v
}
9 N) G, k% T+ d return value;
: P J; w4 z ]/ N6 B: ]- \ }
: a# p* @+ E0 C! X1 _始终只能打印出XXXXXXXXXXXXXXXXXXXX,请各位帮帮忙。 |
|