EveningTrip类:
数据域:
EveningActivityMovement[] eveningActivityNodes:目前使用该trip对象的节点组
int eveningActivityNodesInBuffer:上面节点数组计数
Path path
Coord location
Coord destination
double waitTimeAtEnd
函数域:
构造函数EveningTrip(int nrOfeveningActivityNodes, Coord location)第一个参数表示组中eveningActivity节点个数,eveningActivityNodesInBuffer=0。
boolean addNode(EveningActivityMovement eveningActivityNode)将一个evening activity节点加入组中。
boolean allMembersPresent()检查本组中是否所有节点都找到了去meeting point的路径
这个类是用来控制晚上节点移动的。
EveningActivityControlSystem类:
数据域:
HashMap<Integer, EveningActivityMovement> eveningActivityNodes:哈希表存放使用该移动模型的节点和序号
List<Coord> meetingSpot:用来存放将要访问的节点
EveningTrip[] nextTrip:下一段行程
Random rng
static HashMap<Integer, EveningActivityControlSystem> controlSystem:该移动模型的控制器和相应序号
函数域:
构造函数EveningActivityControlSystem(int id)构造函数中新建一个HashMap,赋给eveningActivityNodes。
static void reset()新建HashMap赋给controlSystem。
void addEveningActivityNode(EveningActivityMovement eveningMovement)向控制系统注册一个eveningActivity节点。将使用eveningMovement移动模型的节点添加到eveningActivityNodes列表中。
void setMeetingSpots(List<Coord> meetingSpots)设置节点之间可以相遇的地点。
EveningTrip getEveningInstructions(int eveningActivityNodeID)获得节点evening activity的活动信息。获取该夜晚活动节点的移动模型,
EveningActivityMovement类:
数据域:
int mode:表示模式,WALKING_TO_MEETING_SPOT_MODE和EVENING_ACTIVITY_MODE
DijkstraPathFinder pathFinder
Coord lastWaypoint
Coord startAtLocation
EveningActivityControlSystem scs
EveningTrip trip
boolean readyToShop
int id
static int nextID = 0:全局变量
int minGroupSize
int maxGroupSize
函数域:
构造函数EveningActivityMovement(Settings settings)由Setting文件创建移动模型默认模式WALKING_TO_MEETING_SPOT_MODE,nrOfMeetingSpots、minGroupSize、maxGroupSize从Settings文件中获取。如果没有指定shoppingSpot,那么从地图上的节点中选取nrOfMeetingSpots个节点,作为meetingSpot。如果指定了地图文件,从文件中读取meetingSpot。id=nextID++,表示从零开始。创建新的eveningActivity控制系统,初始化,将这个Movement添加到控制系统中。
Coord getInitialLocation()从地图上随机获取一个点作为出发地点。
Path getPath()获取路径。如果mode是WALKING,受限找到一条从lastWaypoint到startLocation的路径,然后将lastWaypoint设置为startLocation的值,mode变为EVENING_ACTIVITY_MODE。返回路径;如果mode是EVENING_ACTIVITY_MODE,表示节点已经到达活动地点,readyToShop=true,如果组中所有成员都已经到达