|
|
5仿真币
最近做流行病模型,需要在一个网格里面放多个Agent,我查了一下API,使用OrderedMultiGrid类来构造,里面提供了一些putObjectAt(int, int, index);之类的东西。似乎可以用。但是当我编程调试的时候发现在同一位置只能获取一个对象。这是很令人纳闷的事情。我想问一下Repast有提供什么好方法处理吗,不仅要能存进去,还要能方便的拿出来。) b# I( O9 _. |% D. \# u
private boolean findPotentialPartner(){. q+ X4 Z; Z( A( c0 A) f
boolean value = false;
7 H1 M9 S0 E" Q; J5 v1 M 2 |; \! @0 }' _, g, _
OrderedMulti2DGrid grid = space.getCurrentAgentSpace();
! [7 ^, K5 V* K; | Iterator iterator = grid.getIteratorAt(x, y);% E: w0 h8 [+ D. Q; Q
SexAgent ag1 = null; ; N y9 m% s4 }, ]# r/ m6 X+ t
SexAgent [] potenAgent = new SexAgent[20];
# E3 a0 v/ b) O7 t4 _- M) ?6 @ int goodNumber = 0;
' B8 T7 }3 R( p1 c/ f1 h) M: L5 [ while(iterator.hasNext()){
6 |7 d( }$ N- F2 Q9 y( }, ~ System.out.println("XXXXXXXXXXXXXXXXXXXXX");% p# l) H% z, J; K7 V1 ~
ag1 = (SexAgent)iterator.next(); C+ W# }2 |; `, K) C+ o9 ]# v# `
if((ag1.sex == FEMALE)
/ o& i5 h* o7 v2 p; V9 Z( s4 M, g' u" ` &&(!ag1.isCoupled())){
! m* n/ w2 L6 W) f8 {. b U System.out.println("YYYYYYYYYYYYYYYYYYYY");% y: S, y: k6 T# z7 j! X
potenAgent[goodNumber] = ag1;
; u' C& Q% k% E; ^/ t6 g) | goodNumber ++;1 a& H8 E# d' p
}
( k& \) B0 s, F- I! _' s }
# ?3 U) e! r. V4 M3 |' o' G$ s / Q1 j! n1 p6 N+ ]* {) s
if(goodNumber >0){
5 `8 @0 [) f) Z( |& N c System.out.println("ZZZZZZZZZZZZZZZZZZZZZZZZZZZZ");
! R$ l6 c9 M4 h+ K( j: q7 C( }5 h( g Random rd1 = new Random();
. ^9 y9 a8 a5 q' o4 d5 Y" c0 | int select = rd1.nextInt(goodNumber);! {) r8 ]. D! O2 M
potentialParterner = potenAgent[select];
6 V8 _$ @5 n0 v4 I$ b& H' J value = true;
2 i+ U- U: X, b. y4 v }6 b1 u+ F$ q3 B+ X7 e/ {
return value;8 W3 t: E" o3 V! d' t& W
}, I8 k; Y: M; x- I
始终只能打印出XXXXXXXXXXXXXXXXXXXX,请各位帮帮忙。 |
|