|
|
5仿真币
最近做流行病模型,需要在一个网格里面放多个Agent,我查了一下API,使用OrderedMultiGrid类来构造,里面提供了一些putObjectAt(int, int, index);之类的东西。似乎可以用。但是当我编程调试的时候发现在同一位置只能获取一个对象。这是很令人纳闷的事情。我想问一下Repast有提供什么好方法处理吗,不仅要能存进去,还要能方便的拿出来。
: x8 `* p" M$ I private boolean findPotentialPartner(){2 I# q" k$ Q& d a
boolean value = false;
5 ^; t6 r/ F0 ?: {% ?
& r' v! P5 d3 B$ h6 K" }% q OrderedMulti2DGrid grid = space.getCurrentAgentSpace();
F: J3 Y5 f$ F( h. n- e3 S Iterator iterator = grid.getIteratorAt(x, y);
/ k4 q6 l. D% V0 T Y& t+ l SexAgent ag1 = null;
0 q( |3 | t: s, y; ^. h# P SexAgent [] potenAgent = new SexAgent[20];
8 J, I) j* f# o int goodNumber = 0;- }7 f3 i3 V( H/ m2 i% |
while(iterator.hasNext()){& Y/ ?9 ]) V( J; D) x @1 c
System.out.println("XXXXXXXXXXXXXXXXXXXXX");1 F/ K) T3 V- M, V) @$ t; l7 [, q
ag1 = (SexAgent)iterator.next();% S9 V/ Q: g+ F& z3 o4 l6 L1 M
if((ag1.sex == FEMALE) ' j1 R' C) ]3 M9 ^0 ~3 }0 z5 Z
&&(!ag1.isCoupled())){
3 h7 f( b* z7 z/ B9 d. Z System.out.println("YYYYYYYYYYYYYYYYYYYY");
$ W! f( p+ w3 x& @ potenAgent[goodNumber] = ag1;% F- y4 {2 W9 f
goodNumber ++;
* {8 }. t# h/ m, r }
- b3 i* d3 K- `7 \9 [ }. g/ t# M' Q! l
+ P9 P% e2 W4 o if(goodNumber >0){# [) N" A7 @1 `
System.out.println("ZZZZZZZZZZZZZZZZZZZZZZZZZZZZ");
2 C: Y: Q3 t( O" H4 c3 | Random rd1 = new Random();+ Z/ h6 F+ v6 V; E# T3 K
int select = rd1.nextInt(goodNumber);
% _6 E: k2 D- h potentialParterner = potenAgent[select];
% A- p) U" x. N! x2 R value = true;
$ d; q+ Y# q0 t8 S: M+ n }
, D. S% J+ g8 Z4 c/ J7 } return value;
7 g; W% q- R% o+ T1 |7 T1 l! \( h }6 Y% { c' I w2 N2 R
始终只能打印出XXXXXXXXXXXXXXXXXXXX,请各位帮帮忙。 |
|