|
|
5仿真币
最近做流行病模型,需要在一个网格里面放多个Agent,我查了一下API,使用OrderedMultiGrid类来构造,里面提供了一些putObjectAt(int, int, index);之类的东西。似乎可以用。但是当我编程调试的时候发现在同一位置只能获取一个对象。这是很令人纳闷的事情。我想问一下Repast有提供什么好方法处理吗,不仅要能存进去,还要能方便的拿出来。
2 U6 M+ C/ G0 M7 I5 E- W) L. r; N0 a private boolean findPotentialPartner(){- O6 c5 z% w1 X7 d# v$ _" G1 O
boolean value = false;
' K* t9 u& l6 U b6 w- b* ^ l5 D' b
1 i* c0 a% S8 t' [ OrderedMulti2DGrid grid = space.getCurrentAgentSpace();
6 F, Z% ^2 X: |9 _# J/ X: F% I Iterator iterator = grid.getIteratorAt(x, y);+ E3 L4 B a, n8 ^3 e
SexAgent ag1 = null;
5 ]1 v9 p: ]1 W6 v SexAgent [] potenAgent = new SexAgent[20];
1 y) n- x& {5 [ \1 B. u int goodNumber = 0;
6 z; \' J, D: V# p3 E while(iterator.hasNext()){( e1 ?! d& e# K" \& u
System.out.println("XXXXXXXXXXXXXXXXXXXXX");5 z5 g0 w4 v( l1 Y$ g* P
ag1 = (SexAgent)iterator.next();8 U4 P* w5 b$ t! s$ d% Y
if((ag1.sex == FEMALE) - J4 E0 a* h0 X9 N: s
&&(!ag1.isCoupled())){2 l8 D8 a% s# u) J
System.out.println("YYYYYYYYYYYYYYYYYYYY");
" {0 s! r1 O. q4 h' b potenAgent[goodNumber] = ag1;# w, [5 s9 |! r/ I8 X+ \1 `
goodNumber ++;
2 L/ S3 S7 ]# E( n J. v- B8 B2 ? }
. |1 H* R9 ]9 H8 F- m }4 S& R. G7 M( F1 E6 J7 g
5 \% o4 y& z4 }0 I if(goodNumber >0){
1 g( ^ a. j& j8 Z% O System.out.println("ZZZZZZZZZZZZZZZZZZZZZZZZZZZZ");
% N5 K4 n. {; K4 U Random rd1 = new Random();) q! b3 s) Q6 k7 L, \3 m
int select = rd1.nextInt(goodNumber);- A4 K, n* e9 ~
potentialParterner = potenAgent[select];
- _ g, _% D* b( t! a value = true;+ _! @! G" G+ Q. Y1 u' z7 l
}
# [5 N, F5 i( i$ p return value;! V; p8 A6 t" s; S' A3 @7 |; z
}
# }2 s/ S& R4 Y1 c& l始终只能打印出XXXXXXXXXXXXXXXXXXXX,请各位帮帮忙。 |
|