|
|
5仿真币
最近做流行病模型,需要在一个网格里面放多个Agent,我查了一下API,使用OrderedMultiGrid类来构造,里面提供了一些putObjectAt(int, int, index);之类的东西。似乎可以用。但是当我编程调试的时候发现在同一位置只能获取一个对象。这是很令人纳闷的事情。我想问一下Repast有提供什么好方法处理吗,不仅要能存进去,还要能方便的拿出来。
' a" A3 [" A9 X) N1 t. G: n private boolean findPotentialPartner(){4 T" U1 ^" F# m
boolean value = false;5 m% B! g6 z2 k8 t
% r5 _& L5 f1 s Z$ _8 B5 @* f
OrderedMulti2DGrid grid = space.getCurrentAgentSpace();, H6 {; g, m/ T8 k/ H, X/ g- w
Iterator iterator = grid.getIteratorAt(x, y);
4 A8 S f e* N( W* H6 E SexAgent ag1 = null; . @& S. M4 r$ d6 p9 S1 i
SexAgent [] potenAgent = new SexAgent[20]; e! |' a/ C& f7 m; Z- Q; ~+ c
int goodNumber = 0;& u- {# W5 y4 l& V. B& W
while(iterator.hasNext()){
4 P7 f0 O$ t! l: o' S1 T) d3 b/ X System.out.println("XXXXXXXXXXXXXXXXXXXXX");
, Q: Q& v" n( g' z# J ag1 = (SexAgent)iterator.next();
1 X( F7 z" @+ ?2 W# ? if((ag1.sex == FEMALE)
7 `' H/ X$ G! }& p% J% x1 f% l& A &&(!ag1.isCoupled())){* m! a* j5 q5 y9 D# C
System.out.println("YYYYYYYYYYYYYYYYYYYY");* C8 ^, A2 j! Y5 T6 X8 @% E, p
potenAgent[goodNumber] = ag1;% |! S/ `' {, [& Q
goodNumber ++;% ~! n0 n+ m, f' O! X7 v- d- s9 B
}
5 h1 N1 M0 h- s# N }0 @' s$ e/ [- L; G
# S: b0 I0 X- o if(goodNumber >0){2 {# }1 Z5 F, \4 i5 \: L
System.out.println("ZZZZZZZZZZZZZZZZZZZZZZZZZZZZ"); 7 I9 B7 a4 w A5 i% @* I
Random rd1 = new Random();
9 z% X \# u- S1 g' W( N; U- @- O6 f int select = rd1.nextInt(goodNumber);) E1 d- x. {1 W
potentialParterner = potenAgent[select];
; l2 U" u# e; B+ x value = true;
$ I$ G$ P% V: \/ A: |8 \8 Z9 @3 k }
# i1 I7 z6 ? J: ?& u return value;
8 A3 Q: i/ h8 c9 z# T7 o1 S }: U+ {0 k. R4 Y& |0 M4 s
始终只能打印出XXXXXXXXXXXXXXXXXXXX,请各位帮帮忙。 |
|