|
|
5仿真币
最近做流行病模型,需要在一个网格里面放多个Agent,我查了一下API,使用OrderedMultiGrid类来构造,里面提供了一些putObjectAt(int, int, index);之类的东西。似乎可以用。但是当我编程调试的时候发现在同一位置只能获取一个对象。这是很令人纳闷的事情。我想问一下Repast有提供什么好方法处理吗,不仅要能存进去,还要能方便的拿出来。2 ?( K7 U: q8 v2 v
private boolean findPotentialPartner(){
7 T% ^! Y( H3 u' h7 Q boolean value = false;: G4 C6 A1 h0 T% i; I
4 t4 B' s7 T8 d* ` OrderedMulti2DGrid grid = space.getCurrentAgentSpace();( _% z1 n5 ] M% i0 M# P
Iterator iterator = grid.getIteratorAt(x, y);% D: p, f8 b+ K4 T& Z! Z% Q2 \
SexAgent ag1 = null;
- {. E# |! z$ } d. U SexAgent [] potenAgent = new SexAgent[20];
2 d' p9 j! Q \! `4 j int goodNumber = 0;6 V7 [# c; C" {
while(iterator.hasNext()){9 r$ Y/ i! B8 L# S5 k B& I5 l" T
System.out.println("XXXXXXXXXXXXXXXXXXXXX");
$ Z% ]0 a/ b+ U' b ag1 = (SexAgent)iterator.next();
" O# Y! ^, `& V3 q" `; n if((ag1.sex == FEMALE)
9 |9 N e" U5 }, L9 ` &&(!ag1.isCoupled())){
! B2 T6 p+ j; X" \2 X System.out.println("YYYYYYYYYYYYYYYYYYYY");5 s$ V! @7 n- `6 f/ T& e. W1 o
potenAgent[goodNumber] = ag1;
' e8 e: { |! u goodNumber ++;
2 q. l! v; B7 H8 x7 h }8 Z3 L9 u9 u8 E3 {. U: i
}
( N, j E0 N8 D9 Y% @ u3 |( H' T0 g, Y( k
if(goodNumber >0){
& n$ u' {, m$ ^: m9 R! n4 _ System.out.println("ZZZZZZZZZZZZZZZZZZZZZZZZZZZZ"); " @+ q* y" [. y7 S- f; q- _+ s
Random rd1 = new Random();
! b9 D7 I' V* b g4 m int select = rd1.nextInt(goodNumber);/ O. ^2 o# ^, {7 S# h1 Y
potentialParterner = potenAgent[select];3 X6 M2 n; S: N8 H9 `# }; W
value = true;
z, Z. V; @3 b: w/ R) f1 C- P }: S# I+ ^* R+ e4 f3 ]7 e" ]
return value;
& a/ N/ L0 \$ \8 w6 n% S }: P! u/ ?1 a" \
始终只能打印出XXXXXXXXXXXXXXXXXXXX,请各位帮帮忙。 |
|