|
|
5仿真币
最近做流行病模型,需要在一个网格里面放多个Agent,我查了一下API,使用OrderedMultiGrid类来构造,里面提供了一些putObjectAt(int, int, index);之类的东西。似乎可以用。但是当我编程调试的时候发现在同一位置只能获取一个对象。这是很令人纳闷的事情。我想问一下Repast有提供什么好方法处理吗,不仅要能存进去,还要能方便的拿出来。
- ]8 W9 u( x5 ` ^1 ]- k private boolean findPotentialPartner(){
8 Y" U; \# S$ r/ r0 X. \ boolean value = false;. [& s; Y. U+ j$ K) R% [
2 s# C- T) b2 \0 K; I
OrderedMulti2DGrid grid = space.getCurrentAgentSpace();
% f+ B. F1 n" N Iterator iterator = grid.getIteratorAt(x, y);
, W6 [. Y9 k {) A& l SexAgent ag1 = null; 0 X# }4 `( Y' D5 Y
SexAgent [] potenAgent = new SexAgent[20];; a/ I* N1 S' o) C0 g7 T, U' Z
int goodNumber = 0;4 f/ K) o9 c, I6 i2 _
while(iterator.hasNext()){
+ R/ p' a, y u7 y& r, h System.out.println("XXXXXXXXXXXXXXXXXXXXX");
# y8 q0 Y% e- t; q5 q9 h ag1 = (SexAgent)iterator.next();
6 K& ^8 n4 O5 }/ k: h if((ag1.sex == FEMALE) + L& N) V/ ]! ]% a
&&(!ag1.isCoupled())){
, [! c) q. O" }( j( d System.out.println("YYYYYYYYYYYYYYYYYYYY");5 F2 m4 V: e5 C# r2 N. y, G+ \
potenAgent[goodNumber] = ag1;
! c# E k8 A9 ^3 Y goodNumber ++;2 R( `' t0 _& }" W7 Y
}
8 t' L- O- o% ?, c q2 Y' T }* c# O7 o7 D* M5 f2 o
5 A! |1 x3 Y9 ~# E9 W3 b7 C. i if(goodNumber >0){: H3 A0 K8 Z; C$ ? I( O6 i
System.out.println("ZZZZZZZZZZZZZZZZZZZZZZZZZZZZ"); ; Z6 k& H% Q/ _0 f7 y- {) q
Random rd1 = new Random();
( p( t0 l) ^: Z/ U int select = rd1.nextInt(goodNumber); C9 k9 R, y8 o( p8 r. g
potentialParterner = potenAgent[select];. o. L9 i) K% }3 C1 A
value = true;
+ x& B$ V2 }* Z; t6 u }
x1 p# R9 P+ k- } return value;
" N: M2 J5 k4 E F, p8 i }+ p. x1 h1 l/ Z# S7 ]$ E
始终只能打印出XXXXXXXXXXXXXXXXXXXX,请各位帮帮忙。 |
|