|
|
5仿真币
最近做流行病模型,需要在一个网格里面放多个Agent,我查了一下API,使用OrderedMultiGrid类来构造,里面提供了一些putObjectAt(int, int, index);之类的东西。似乎可以用。但是当我编程调试的时候发现在同一位置只能获取一个对象。这是很令人纳闷的事情。我想问一下Repast有提供什么好方法处理吗,不仅要能存进去,还要能方便的拿出来。, Q5 X5 u9 ^! S$ B
private boolean findPotentialPartner(){7 T( z8 v. d, r p2 R4 k9 |! k: N) Z
boolean value = false;
1 L; ?- |0 X$ b0 `0 B / v- O+ G0 x4 [, n4 v4 @! n
OrderedMulti2DGrid grid = space.getCurrentAgentSpace();6 o4 H, v, }/ L+ ^( A
Iterator iterator = grid.getIteratorAt(x, y);
; d7 R) Q9 U2 ~2 a7 }9 u& H4 G SexAgent ag1 = null;
: q, Y2 {4 i S, Z) \, ^, P SexAgent [] potenAgent = new SexAgent[20];
. V8 W7 t8 o+ L7 H, X int goodNumber = 0;
- C* s% Q) V, y7 g, C: m5 d while(iterator.hasNext()){* ?6 t1 U) p! R; e5 H5 l
System.out.println("XXXXXXXXXXXXXXXXXXXXX");
9 l; j3 ~8 m( A7 E ag1 = (SexAgent)iterator.next();2 T9 {5 ~% V6 Z
if((ag1.sex == FEMALE) # o7 D6 f# h! `8 B5 @( q
&&(!ag1.isCoupled())){
7 E) i" h! C( k System.out.println("YYYYYYYYYYYYYYYYYYYY");
, I6 G" W+ Q- V7 q6 { potenAgent[goodNumber] = ag1;
; w/ W" ?8 K' Z) [( |1 I goodNumber ++;6 i! N9 w! Q- m9 z
}7 X% a" j6 b/ ~- u6 f
}
/ e% U. q7 ~% p# S6 M M, |+ w/ `" E1 u. h
if(goodNumber >0){4 n5 l T9 w& ]/ n+ @" Q
System.out.println("ZZZZZZZZZZZZZZZZZZZZZZZZZZZZ");
[7 f- i" i+ A& Y8 | q; z Random rd1 = new Random();
/ L$ b/ a# y" j; b) |2 ^ int select = rd1.nextInt(goodNumber);! c8 h/ a0 q7 q( _# a' J
potentialParterner = potenAgent[select];
& @/ `' t1 k/ e% s4 N! w( ^! U% v value = true;
/ ~9 g9 B9 z4 W2 T/ V) S }9 G+ n. l- V2 B* T* ~. _+ D& f
return value;
' `: Q+ E8 b7 B9 S" w) ], I/ a, l( S }
: v: ^) r! R( l5 m始终只能打印出XXXXXXXXXXXXXXXXXXXX,请各位帮帮忙。 |
|