|
|
5仿真币
最近做流行病模型,需要在一个网格里面放多个Agent,我查了一下API,使用OrderedMultiGrid类来构造,里面提供了一些putObjectAt(int, int, index);之类的东西。似乎可以用。但是当我编程调试的时候发现在同一位置只能获取一个对象。这是很令人纳闷的事情。我想问一下Repast有提供什么好方法处理吗,不仅要能存进去,还要能方便的拿出来。 j+ Y; q. r0 a7 a G6 y! y% `0 M
private boolean findPotentialPartner(){, i d7 J5 C0 E% Z3 d# L: i
boolean value = false;
! }8 g: b4 ]: m- n
8 h K6 u/ c8 U OrderedMulti2DGrid grid = space.getCurrentAgentSpace();
: V( b- B" s4 I+ a+ m Iterator iterator = grid.getIteratorAt(x, y);9 r% l$ |- i2 y# `
SexAgent ag1 = null; B+ ]0 n8 t( r/ s
SexAgent [] potenAgent = new SexAgent[20];
2 T7 R+ M0 x1 ~5 V6 H3 A: L int goodNumber = 0;: m3 R$ U5 z0 P0 D0 `+ F/ y
while(iterator.hasNext()){- i% I5 T9 O! S- h- ]4 f
System.out.println("XXXXXXXXXXXXXXXXXXXXX");( T" i3 r8 Z1 ^& c" H6 q4 O9 i
ag1 = (SexAgent)iterator.next();( S4 l6 {) w& Z7 S- |
if((ag1.sex == FEMALE) 0 w6 w" q0 K, k4 ~6 W& ^
&&(!ag1.isCoupled())){
$ b& r4 m' R' v( r0 x! C: t& _ System.out.println("YYYYYYYYYYYYYYYYYYYY");' ^( C, A. k0 [* B& e! H2 ~- C% D
potenAgent[goodNumber] = ag1;
7 c) f$ x8 b: y. k A( K# w/ x goodNumber ++;
4 T( ^& W# t) ~9 e' |$ O+ k/ Y }! D+ C% K" \& K# v- \8 b
}, _+ c) F% b5 l# n/ y& s" r$ i
2 a' t4 O- G! v0 G; o+ V if(goodNumber >0){6 P# H& w. H/ `/ l; h
System.out.println("ZZZZZZZZZZZZZZZZZZZZZZZZZZZZ");
; t( ^ ]. p g, v5 d Random rd1 = new Random();
' A$ \5 N; E4 x5 E$ Y; c int select = rd1.nextInt(goodNumber);
7 n/ U6 } g" ]/ L1 ]* w potentialParterner = potenAgent[select];, b: H: e" t& J4 N$ \+ n
value = true;' V% B l% W( j1 C6 ^! h
}
^$ A$ X( [) X- q) I return value;
_2 |& {1 V$ O( _1 z7 w }
- ^1 T4 E1 Z4 k" T# }' m' b0 e始终只能打印出XXXXXXXXXXXXXXXXXXXX,请各位帮帮忙。 |
|