|
|
5仿真币
最近做流行病模型,需要在一个网格里面放多个Agent,我查了一下API,使用OrderedMultiGrid类来构造,里面提供了一些putObjectAt(int, int, index);之类的东西。似乎可以用。但是当我编程调试的时候发现在同一位置只能获取一个对象。这是很令人纳闷的事情。我想问一下Repast有提供什么好方法处理吗,不仅要能存进去,还要能方便的拿出来。, p5 ~! m2 M: ]5 S: t
private boolean findPotentialPartner(){
! Q4 o5 X9 g2 R& t z% ] boolean value = false;( Z1 I+ ]$ Z% Q+ [' q, P) B8 q
! Y" ^8 i) i, ?) \' o i
OrderedMulti2DGrid grid = space.getCurrentAgentSpace();
; t7 I: A0 k# Q Iterator iterator = grid.getIteratorAt(x, y);& q4 a/ W6 n9 Z4 S
SexAgent ag1 = null;
% R# `4 L! [! y: x, x0 i* u' g5 _ SexAgent [] potenAgent = new SexAgent[20];
' |, H( k7 R: M. T' _( z int goodNumber = 0;
# C9 t B# S$ x) z while(iterator.hasNext()){3 W! ?# J. q; D/ p
System.out.println("XXXXXXXXXXXXXXXXXXXXX");
& q S2 r8 P8 T, v ag1 = (SexAgent)iterator.next();$ [) r$ x/ J; s+ I
if((ag1.sex == FEMALE)
( G- X* K" p1 r& q$ U &&(!ag1.isCoupled())){
- s; `! h+ R/ {, k: E. G8 n System.out.println("YYYYYYYYYYYYYYYYYYYY");
; d: q/ y5 m9 s5 g potenAgent[goodNumber] = ag1;/ r5 k2 F& r* s0 y) s* ?
goodNumber ++;
7 G; r) O- D2 O Q& \- v }3 v! `* y1 S* p, H/ |
}
7 V8 U( P% E0 h8 |: {. P( k3 h ! ?+ R/ r; U7 w4 R9 v8 h
if(goodNumber >0){
4 f. u8 N0 Y8 \ System.out.println("ZZZZZZZZZZZZZZZZZZZZZZZZZZZZ"); , W6 ?9 B9 k' r9 G: J% z
Random rd1 = new Random();
! t- P4 ~0 t; b7 } int select = rd1.nextInt(goodNumber);
5 Z& O$ ^; G5 l/ L. _ potentialParterner = potenAgent[select];8 M$ m+ [5 W% M6 x! q' g( v
value = true;7 L8 j7 ^. F. d: G# s1 c! y
}2 M$ L: i# v0 Q: t( A/ W
return value;
9 I- ?+ \. J$ T4 j, L' p3 i }
+ c- t! T7 j& [/ g8 Y$ y始终只能打印出XXXXXXXXXXXXXXXXXXXX,请各位帮帮忙。 |
|