|
5仿真币
最近做流行病模型,需要在一个网格里面放多个Agent,我查了一下API,使用OrderedMultiGrid类来构造,里面提供了一些putObjectAt(int, int, index);之类的东西。似乎可以用。但是当我编程调试的时候发现在同一位置只能获取一个对象。这是很令人纳闷的事情。我想问一下Repast有提供什么好方法处理吗,不仅要能存进去,还要能方便的拿出来。! Z! j: v9 d: c; z8 T ^
private boolean findPotentialPartner(){5 C3 {. }0 N3 @+ J3 J6 L' j
boolean value = false;
: d; K( x" F; j) T, ~/ I& G& @7 N ' r: g% D# g+ Z
OrderedMulti2DGrid grid = space.getCurrentAgentSpace();3 z3 q$ Q+ ^, a9 `7 x
Iterator iterator = grid.getIteratorAt(x, y);- }/ P" ?3 e. ^4 g. x( _
SexAgent ag1 = null; 5 Y7 ^0 i! S8 t; w. |( O
SexAgent [] potenAgent = new SexAgent[20];7 T2 L/ B8 f9 D: T& m/ x3 y/ B
int goodNumber = 0;
5 ~# L8 u7 Y" p: c8 O+ _; X while(iterator.hasNext()){6 d8 @( M& J+ s
System.out.println("XXXXXXXXXXXXXXXXXXXXX");# S5 C3 _' p7 C
ag1 = (SexAgent)iterator.next();
- C5 x! O0 K- I/ F( k9 _: `1 P if((ag1.sex == FEMALE) & h0 m" ?+ o: j+ W
&&(!ag1.isCoupled())){
$ t O, ?' b( K# @# X0 U9 I& t4 O( M System.out.println("YYYYYYYYYYYYYYYYYYYY");
' v- O+ b$ ^8 C* U) z potenAgent[goodNumber] = ag1;+ B2 c! A: \2 S2 N0 g
goodNumber ++;
) A1 [, e# ^& A: e6 | }
" G1 Q) p; O* e I }3 X! e/ E, l; t; a
7 D- e" ]( p/ [8 \$ y
if(goodNumber >0){
+ N- ~- C. v% R! ~8 n3 T System.out.println("ZZZZZZZZZZZZZZZZZZZZZZZZZZZZ");
- ]2 m4 C. R$ J0 A& D$ D, H Random rd1 = new Random();
$ v1 d+ R3 t* z. F& t+ g+ e int select = rd1.nextInt(goodNumber);0 I. m2 N2 d+ i9 X4 ~% z1 h) v0 X8 A
potentialParterner = potenAgent[select];3 ?* P- l* E3 j2 A' r- m C
value = true;8 C2 s# H' K3 U5 K* J
}+ L; B. n. n* ^0 N5 P7 v2 ^
return value;
! @6 G7 |+ C+ N7 N% t$ I' l }
9 y* u: ~$ ]5 t" b" k始终只能打印出XXXXXXXXXXXXXXXXXXXX,请各位帮帮忙。 |
|