|
|
5仿真币
最近做流行病模型,需要在一个网格里面放多个Agent,我查了一下API,使用OrderedMultiGrid类来构造,里面提供了一些putObjectAt(int, int, index);之类的东西。似乎可以用。但是当我编程调试的时候发现在同一位置只能获取一个对象。这是很令人纳闷的事情。我想问一下Repast有提供什么好方法处理吗,不仅要能存进去,还要能方便的拿出来。
, }" l" N7 I( ^5 E8 Q" ` private boolean findPotentialPartner(){9 L8 c! l# H) M5 ]8 N8 Q
boolean value = false;) w" I+ s+ S+ D; K: }5 D4 S( ~
: u: r# o0 {' z! m* D6 n OrderedMulti2DGrid grid = space.getCurrentAgentSpace();
% v+ M( g( P$ o$ t& w4 v Iterator iterator = grid.getIteratorAt(x, y);. Q3 b) J3 ^/ D$ C6 E6 Z! m( I+ O
SexAgent ag1 = null;
" O! ^7 G& l W4 W+ V8 c7 J% E SexAgent [] potenAgent = new SexAgent[20];
% y2 X5 a1 B# W! Q6 N9 Y4 T int goodNumber = 0;
) ~# ^2 t' s( b0 l. R' @1 M while(iterator.hasNext()){6 E2 ~2 c3 s O! i9 @
System.out.println("XXXXXXXXXXXXXXXXXXXXX");
& Q; [1 q" `4 b1 d! y) D ag1 = (SexAgent)iterator.next();
$ V4 |7 h( u" h- u if((ag1.sex == FEMALE)
* x* T8 ^1 L( t+ L# v &&(!ag1.isCoupled())){) }; ]5 w' a8 E! i
System.out.println("YYYYYYYYYYYYYYYYYYYY");. Z: `, G6 z$ l- [0 e: x
potenAgent[goodNumber] = ag1;
$ J, {3 \4 M* v goodNumber ++;
8 ~- T" f9 F: U }
+ N8 N/ p+ K. W5 {5 S }. M; y6 _7 U' K9 S) E2 X' H
5 W/ E) h+ z8 o' s0 ^! }4 L
if(goodNumber >0){
' Q9 Q* ?4 [7 b$ m System.out.println("ZZZZZZZZZZZZZZZZZZZZZZZZZZZZ"); ' [) m. [* t) t4 L
Random rd1 = new Random();
/ ?" e( v; B. X0 D; Q5 [; n int select = rd1.nextInt(goodNumber);
! I6 d3 v* M6 b" g potentialParterner = potenAgent[select];! u5 W# g, s1 d* b
value = true;
2 d0 l( {+ m1 X+ N }
2 U3 y; G8 X! k6 }( J+ F return value;0 ]# ]4 S3 Y5 n4 Y
}
: o3 K& @ A. `9 t- r始终只能打印出XXXXXXXXXXXXXXXXXXXX,请各位帮帮忙。 |
|