|
|
5仿真币
最近做流行病模型,需要在一个网格里面放多个Agent,我查了一下API,使用OrderedMultiGrid类来构造,里面提供了一些putObjectAt(int, int, index);之类的东西。似乎可以用。但是当我编程调试的时候发现在同一位置只能获取一个对象。这是很令人纳闷的事情。我想问一下Repast有提供什么好方法处理吗,不仅要能存进去,还要能方便的拿出来。
`' {7 h( L! o' z* W1 S9 { private boolean findPotentialPartner(){
4 I5 F8 B6 \- p: l+ p5 R( u boolean value = false;
8 Z, n& u, E! |" { H7 d/ ^/ r( \
; G+ c. E- }$ A+ L" ^! h OrderedMulti2DGrid grid = space.getCurrentAgentSpace();: |# F! C$ n4 z4 _
Iterator iterator = grid.getIteratorAt(x, y);# u7 Q; q; J, {5 ]9 P* H
SexAgent ag1 = null; 7 m* G$ p4 h3 s' E
SexAgent [] potenAgent = new SexAgent[20];
5 z3 R4 V4 O" u4 e. b, R int goodNumber = 0;
1 F" ~' o0 x/ y: |! b; d while(iterator.hasNext()){! {# s8 \4 o; Y7 {
System.out.println("XXXXXXXXXXXXXXXXXXXXX");2 F5 |; Q0 c) `$ V3 g% h% a$ q
ag1 = (SexAgent)iterator.next();0 A9 f, H' k+ s& |) {
if((ag1.sex == FEMALE) ) J# ^' ^. [( ?3 Y- p
&&(!ag1.isCoupled())){
0 e, M( [& c0 z: p+ m System.out.println("YYYYYYYYYYYYYYYYYYYY");
* h; U4 p3 N2 J O9 b) Q g- s4 q potenAgent[goodNumber] = ag1;
5 z0 v9 ~* X5 o/ ` goodNumber ++;
$ x9 H. h1 c; h6 @4 n2 ^ }' j" p; u6 H) s4 I' V
}* I; x: C, x9 P& b
0 h& `4 g7 C0 c2 t
if(goodNumber >0){( _# D% Z" {; J* f6 c- d6 n: s; }
System.out.println("ZZZZZZZZZZZZZZZZZZZZZZZZZZZZ");
) A6 e0 W3 o/ e) j Random rd1 = new Random();
& |- s8 |! S, |! O9 S' D# K( [" t int select = rd1.nextInt(goodNumber);
) C# o* b, s/ g+ I/ Y potentialParterner = potenAgent[select];. E1 g! Y9 F" I2 t5 n+ }0 I7 g
value = true;. r' `; j) D1 X( Q" n7 T2 M" q- M
}) X8 K3 |2 Y1 R! q0 h
return value;$ E7 m* W3 F0 W! q& _; g
}6 l$ O' M+ S( I! U. W% K" K5 A
始终只能打印出XXXXXXXXXXXXXXXXXXXX,请各位帮帮忙。 |
|