|
|
5仿真币
最近做流行病模型,需要在一个网格里面放多个Agent,我查了一下API,使用OrderedMultiGrid类来构造,里面提供了一些putObjectAt(int, int, index);之类的东西。似乎可以用。但是当我编程调试的时候发现在同一位置只能获取一个对象。这是很令人纳闷的事情。我想问一下Repast有提供什么好方法处理吗,不仅要能存进去,还要能方便的拿出来。/ N( @5 r) k3 X. ^) W
private boolean findPotentialPartner(){2 y$ B, @' H8 t8 |, T, C) p
boolean value = false;
" B1 m" o' M8 G& M1 ^" q # t5 [) a8 ?; z5 ]% A- J
OrderedMulti2DGrid grid = space.getCurrentAgentSpace();
* C1 H7 V& }; S' w Iterator iterator = grid.getIteratorAt(x, y);- w! S8 H' \8 i# @2 W
SexAgent ag1 = null; ; ~+ G! y# z+ R
SexAgent [] potenAgent = new SexAgent[20];3 J# V& s+ w( j+ v6 G
int goodNumber = 0;
+ A0 L0 Q2 }4 N3 d% ?3 E& K9 h. w while(iterator.hasNext()){
7 E0 \" }) w# _* {* Y' A; L4 } System.out.println("XXXXXXXXXXXXXXXXXXXXX");
q& t8 n4 b @( _, ^ ag1 = (SexAgent)iterator.next();: Q& h/ O0 o* N) \( X
if((ag1.sex == FEMALE)
0 U. v0 n. a, k0 M) I4 X &&(!ag1.isCoupled())){
% q" M% k7 p! h System.out.println("YYYYYYYYYYYYYYYYYYYY");
4 s' x7 x" m8 O2 w! N6 T& v potenAgent[goodNumber] = ag1;/ s# s) W( h( s" ]; b
goodNumber ++;8 [' a) l6 `1 q, u4 c$ A
}
: d$ T' s- Q9 d/ L }
% z2 N9 j/ F, N' R& h1 _9 X# t 1 |- y7 h: b$ B& \3 r ^, v7 n) V
if(goodNumber >0){
t5 ]9 t& v4 Y' c. b# Z System.out.println("ZZZZZZZZZZZZZZZZZZZZZZZZZZZZ");
$ a/ d9 k; |4 j! j% f: W* b Random rd1 = new Random();9 D X/ x. ^8 v$ {9 S- E
int select = rd1.nextInt(goodNumber);/ x) |9 J! D7 ]( Z! J7 W; t
potentialParterner = potenAgent[select]; T9 J/ X2 |) ~ }# J {( ^
value = true;
: W4 j$ s* E9 D3 g }6 Q5 ^, f% R: c/ q. N: D7 r. M
return value;5 m$ B: L1 j! ]9 k4 t6 P0 H- O
}
, I7 ?; D# ^% b) Q& W始终只能打印出XXXXXXXXXXXXXXXXXXXX,请各位帮帮忙。 |
|