|
|
5仿真币
最近做流行病模型,需要在一个网格里面放多个Agent,我查了一下API,使用OrderedMultiGrid类来构造,里面提供了一些putObjectAt(int, int, index);之类的东西。似乎可以用。但是当我编程调试的时候发现在同一位置只能获取一个对象。这是很令人纳闷的事情。我想问一下Repast有提供什么好方法处理吗,不仅要能存进去,还要能方便的拿出来。
+ ^' S2 w& y( {2 t private boolean findPotentialPartner(){
, J* D9 t9 O# B% h$ ~ boolean value = false;
( i+ |7 [; [. Z s" _& k, ~8 o 8 e( }. s1 k/ `3 \ ?
OrderedMulti2DGrid grid = space.getCurrentAgentSpace();( L: |, m7 f, J% B* z/ w/ h
Iterator iterator = grid.getIteratorAt(x, y);: b @- r( P! m8 M) I! ~
SexAgent ag1 = null;
6 v1 H" a6 E$ \ SexAgent [] potenAgent = new SexAgent[20];
" l% m' {" ]2 Q. t% N; z O int goodNumber = 0;+ ?/ ?! t, y$ A# n5 ~" W0 Q; v: k
while(iterator.hasNext()){
0 D4 T) }+ \, `2 y: ? System.out.println("XXXXXXXXXXXXXXXXXXXXX");; p2 F. y) H8 i
ag1 = (SexAgent)iterator.next();
: z8 P" w% y2 [( @9 [- { if((ag1.sex == FEMALE) 9 H* j+ K0 g+ A$ A/ b/ E
&&(!ag1.isCoupled())){* k# D) e! H' G9 W* T: n) c
System.out.println("YYYYYYYYYYYYYYYYYYYY");
$ i7 J! x- U4 F9 B/ w1 D potenAgent[goodNumber] = ag1;0 N9 L7 q; E* t+ s% U
goodNumber ++;7 l% T3 f' v2 Q" S) \
}) a. x; S7 K' R7 ?
}$ @# s. S& ?" l- m5 x9 x/ R- x
& g3 T4 X# _6 R
if(goodNumber >0){& V) v( h# r, Y2 ]- o- ^
System.out.println("ZZZZZZZZZZZZZZZZZZZZZZZZZZZZ"); 6 Q2 v1 K/ X* P5 A& s) P
Random rd1 = new Random();! S6 }8 A* B3 `% r1 i6 s. U7 A. a
int select = rd1.nextInt(goodNumber);# q$ y" ^+ } g! g! @
potentialParterner = potenAgent[select];
' p+ `; y' F& }$ f# O value = true;2 r r. M! H& i. y# X
}9 b( y) ^5 `9 H5 T( w" u K
return value;
l; f+ p; x: r }; P$ w1 N1 y2 v
始终只能打印出XXXXXXXXXXXXXXXXXXXX,请各位帮帮忙。 |
|