最近做流行病模型,需要在一个网格里面放多个Agent,我查了一下API,使用OrderedMultiGrid类来构造,里面提供了一些putObjectAt(int, int, index);之类的东西。似乎可以用。但是当我编程调试的时候发现在同一位置只能获取一个对象。这是很令人纳闷的事情。我想问一下Repast有提供什么好方法处理吗,不仅要能存进去,还要能方便的拿出来。 6 ^5 r. ~% s9 r. x q. T private boolean findPotentialPartner(){8 y% o4 l4 M M0 r
boolean value = false;! {3 ?5 [* o. g+ c/ V; u4 l
2 k8 r! \; K* S4 E- l: l OrderedMulti2DGrid grid = space.getCurrentAgentSpace();" ^# c: s, D5 h9 q; J
Iterator iterator = grid.getIteratorAt(x, y); , ?$ h5 v1 F4 K* d SexAgent ag1 = null; * J8 C6 V. F3 F4 x! o t
SexAgent [] potenAgent = new SexAgent[20];! \8 }- M. q$ [+ e( @% F. ?1 P
int goodNumber = 0;* S; n( G- x( i& ^1 V
while(iterator.hasNext()){0 a# B ~: Y2 p
System.out.println("XXXXXXXXXXXXXXXXXXXXX"); 1 \7 _. D7 [* ` ag1 = (SexAgent)iterator.next(); 4 z1 x; q' e8 a$ G/ T4 b# O2 L if((ag1.sex == FEMALE) 7 Y( c) t. p' {7 Y
&&(!ag1.isCoupled())){, S$ V% d' W9 v
System.out.println("YYYYYYYYYYYYYYYYYYYY");5 Z9 R1 d, i9 f3 Y
potenAgent[goodNumber] = ag1;0 ^7 _! A. ~1 `( R0 m
goodNumber ++;) o3 n5 I/ [# W3 D& T! @
}" h6 i! i3 ]. f' f# b4 O! g
}! v4 y) ] a5 P& G! Q' H4 E
( l3 D, [9 [$ r: A8 m1 V7 z
if(goodNumber >0){7 A9 ]7 X; Q, _7 o f; B& b+ q- W
System.out.println("ZZZZZZZZZZZZZZZZZZZZZZZZZZZZ"); 4 a" h; u% a/ [+ H Random rd1 = new Random();4 z" n& j* @) p& s
int select = rd1.nextInt(goodNumber); 3 L6 }: ?+ \ w9 U potentialParterner = potenAgent[select]; 4 `3 F, }* d) o2 ~8 R value = true; ! ^! \& ~3 S; S } % u5 p @* O" U G1 P0 `8 P return value;5 h5 _% Y: f8 n7 x/ H
}9 ]' M5 t B) Z. Y% l" r
始终只能打印出XXXXXXXXXXXXXXXXXXXX,请各位帮帮忙。