|
|
5仿真币
最近做流行病模型,需要在一个网格里面放多个Agent,我查了一下API,使用OrderedMultiGrid类来构造,里面提供了一些putObjectAt(int, int, index);之类的东西。似乎可以用。但是当我编程调试的时候发现在同一位置只能获取一个对象。这是很令人纳闷的事情。我想问一下Repast有提供什么好方法处理吗,不仅要能存进去,还要能方便的拿出来。
4 Z. g( J' {5 r3 B: n. j private boolean findPotentialPartner(){
* A3 y7 L1 Y" a2 _ boolean value = false;
* N K( X# C/ ~# r2 X* w6 V$ E L* G& w
1 J2 V* `7 C1 [7 w1 ?1 Q% V OrderedMulti2DGrid grid = space.getCurrentAgentSpace();' j% ?4 h) u% P
Iterator iterator = grid.getIteratorAt(x, y);, g& v" {5 ^5 l3 L6 D4 W9 U" z8 X
SexAgent ag1 = null;
( A( j u8 r( S SexAgent [] potenAgent = new SexAgent[20];7 w3 S* u* q3 j' S" w- T
int goodNumber = 0;
6 w: K2 P( w" h2 a' n+ f while(iterator.hasNext()){
6 R: M( a) p. ?- G% t System.out.println("XXXXXXXXXXXXXXXXXXXXX");: }4 k. P' m% B' D
ag1 = (SexAgent)iterator.next();
2 j. [5 _( V# C if((ag1.sex == FEMALE) 8 a) c) u$ @' J- W/ b* R7 g
&&(!ag1.isCoupled())){8 e A% \1 h' B
System.out.println("YYYYYYYYYYYYYYYYYYYY");
4 s& h& E8 S7 t/ x, t# i0 ] potenAgent[goodNumber] = ag1;# B/ Q" }/ W. g
goodNumber ++;6 o1 X0 n) W5 o; s* ?/ [# V
}6 ?' }/ v+ x/ f4 j- y p6 I @7 ?
}
+ o! e- q4 \/ J
7 A( `+ K# Z% |1 u. j1 `, x if(goodNumber >0){' i& b. ?5 D: }* t/ } I! \- s
System.out.println("ZZZZZZZZZZZZZZZZZZZZZZZZZZZZ");
I5 e: v: G, ^* g1 `) j; ~6 p Random rd1 = new Random();
! l+ h9 o% I" a$ `: X! X8 Q3 V& N int select = rd1.nextInt(goodNumber);% @# [' P. K8 J* H) G l, F
potentialParterner = potenAgent[select];
v, c6 \/ `; C* ]/ q value = true;$ x5 m! K) H N% z
}
5 a! v7 U/ O7 t/ c( _- s2 Q6 E" h return value;
8 k2 r& U+ X0 J }1 s6 K5 c- U$ D. T0 @
始终只能打印出XXXXXXXXXXXXXXXXXXXX,请各位帮帮忙。 |
|