|
|
5仿真币
最近做流行病模型,需要在一个网格里面放多个Agent,我查了一下API,使用OrderedMultiGrid类来构造,里面提供了一些putObjectAt(int, int, index);之类的东西。似乎可以用。但是当我编程调试的时候发现在同一位置只能获取一个对象。这是很令人纳闷的事情。我想问一下Repast有提供什么好方法处理吗,不仅要能存进去,还要能方便的拿出来。( W: M5 v9 w6 ?5 h6 P
private boolean findPotentialPartner(){, d( j5 H5 J) P9 x/ X# N
boolean value = false;
% {% `& _ a. ?. y5 C
[+ z1 g. |1 o) U4 M- B' T OrderedMulti2DGrid grid = space.getCurrentAgentSpace();
' c3 ~$ U' a8 }" a0 m" H" x" }* X Iterator iterator = grid.getIteratorAt(x, y);
) h3 d" j0 E9 z# w( M2 v' h SexAgent ag1 = null;
- N: \- B* o8 s7 }+ C SexAgent [] potenAgent = new SexAgent[20];
# t# D% @7 H& R) K3 Z$ l0 ?- ` int goodNumber = 0;$ @5 R( f# x) ^
while(iterator.hasNext()){
. g& ~3 ^" @" Z- ]1 @% ?. A System.out.println("XXXXXXXXXXXXXXXXXXXXX");
3 |& y6 N, ~. L' W/ I8 T0 L, r ag1 = (SexAgent)iterator.next();8 s6 j/ e0 P% [
if((ag1.sex == FEMALE)
' U- v& f: U+ t1 h4 n &&(!ag1.isCoupled())){
9 z$ p3 ~. i& w6 F" D System.out.println("YYYYYYYYYYYYYYYYYYYY"); {3 b: d) Q1 _2 }3 e, }& n0 _1 w
potenAgent[goodNumber] = ag1;
: U5 w8 B5 I! y goodNumber ++;
/ c/ i4 V& F$ [, ~6 Y ~+ T5 x' p }
+ D$ v# C0 G0 H3 g f6 s0 G* J) s* ` }
4 C+ x* S& [- P8 K$ O+ n5 a9 m ; z1 s: u) E' w9 n4 u( [
if(goodNumber >0){" l4 ^3 K, o/ G3 ?" Q( L
System.out.println("ZZZZZZZZZZZZZZZZZZZZZZZZZZZZ");
+ o5 k( h b# p# B- [, w; P Random rd1 = new Random();
* K7 G+ m! }) X/ C int select = rd1.nextInt(goodNumber);0 C' u# S8 w; F" d
potentialParterner = potenAgent[select];! ?/ S$ i/ a/ @7 q& R
value = true; o4 l5 j4 E/ i8 H+ L+ `. `+ `
}9 X* R1 M# R8 z$ s, ?1 ]$ w
return value;
. G6 A4 O$ a) _/ \9 X" x2 m }- m5 }& x; o) F* p+ a4 E
始终只能打印出XXXXXXXXXXXXXXXXXXXX,请各位帮帮忙。 |
|