|
|
5仿真币
最近做流行病模型,需要在一个网格里面放多个Agent,我查了一下API,使用OrderedMultiGrid类来构造,里面提供了一些putObjectAt(int, int, index);之类的东西。似乎可以用。但是当我编程调试的时候发现在同一位置只能获取一个对象。这是很令人纳闷的事情。我想问一下Repast有提供什么好方法处理吗,不仅要能存进去,还要能方便的拿出来。
5 v3 p$ L8 z' n: [) r; M% E6 B private boolean findPotentialPartner(){
, L: F p# R; `' E8 S boolean value = false;8 O5 q) I& G+ ?* O' a' }7 P7 T
/ Q# q& J( j9 U! k) f
OrderedMulti2DGrid grid = space.getCurrentAgentSpace();
7 [& L0 t- [" [' @0 M8 Z; c/ } Iterator iterator = grid.getIteratorAt(x, y);7 f6 P# e/ G! |+ C! y" ^% h
SexAgent ag1 = null;
0 a4 ~0 g% P/ R" x ] SexAgent [] potenAgent = new SexAgent[20];4 c1 w2 V r$ m' V3 w% e( t' c& O
int goodNumber = 0;' r3 s# p9 k5 A/ T# F
while(iterator.hasNext()){. O+ \! Z8 c$ J( d9 `0 K
System.out.println("XXXXXXXXXXXXXXXXXXXXX"); H! b( B/ Y8 {0 R) }0 E
ag1 = (SexAgent)iterator.next();5 j: ^' R2 {- r
if((ag1.sex == FEMALE)
( ?3 V- k/ \5 c8 F &&(!ag1.isCoupled())){
Q" c1 w0 Q5 c7 ]. b: G System.out.println("YYYYYYYYYYYYYYYYYYYY");7 q8 T0 j1 u- A# @. G' |) K2 ]. D
potenAgent[goodNumber] = ag1;5 G" y- @5 f* Y& V; R& m
goodNumber ++;
% A$ V; w- j! o3 Q2 Y }: u. u6 L9 I# T1 V: @& o& |, `) _
}
5 j4 A& I+ F% K9 s+ I" \
* I- T" {, y) u. _ if(goodNumber >0){
' ^% o+ r6 V7 B* p6 N! Z2 W System.out.println("ZZZZZZZZZZZZZZZZZZZZZZZZZZZZ");
# Q8 e6 {- e; B3 |, O+ u- u& k4 l Random rd1 = new Random();; P3 C7 p6 ]% }7 [) q
int select = rd1.nextInt(goodNumber);
! t" N0 B+ L: p potentialParterner = potenAgent[select];) m1 N; G0 u. {' \! |
value = true;
6 g2 H5 G3 b6 o; e9 e1 V+ J }
% y7 w* S. R% ~) g, b return value;
& } k: s7 `* Z; F% Y' R; _ }4 v% s1 c" R1 q
始终只能打印出XXXXXXXXXXXXXXXXXXXX,请各位帮帮忙。 |
|