Movement models代码分析3--WorkingDayMovement

来源:互联网 发布:期货研究员 知乎 编辑:程序博客网 时间:2024/06/10 18:13
This movement model makes use of several other movement models to simulate  movement with daily routines. People wake up in the morning, go to work,go shopping or similar activities in the evening and finally go home to sleep. 

public class WorkingDayMovement extends ExtendedMovementModel
五种模式
private static final int BUS_TO_WORK_MODE = 0;
private static final int BUS_TO_HOME_MODE = 1;
private static final int BUS_TO_EVENING_ACTIVITY_MODE = 2;
private static final int WORK_MODE = 3;
private static final int HOME_MODE = 4;
private static final int EVENING_ACTIVITY_MODE = 5;

newOrders(){}           //用于切换模式

获得初始位置

子模式:
HomeActivityMovement
public class HomeActivityMovement extends MapBasedMovement
三种状态
       private static final int WALKING_HOME_MODE = 0;
private static final int AT_HOME_MODE = 1;
private static final int READY_MODE = 2;

一天的长度:  86000

private DijkstraPathFinder pathFinder

public HomeActivityMovement(Settings settings) //设置home的坐标,获取时间差timeDifference

getInitialLocation() //获取初始位置
Path getPath(){} //
  若为WALKING_HOME_MODE,则回家:
  1.获取现在的坐标和家的坐标,
  2. List<MapNode> nodes = pathFinder.getShortestPath(thisNode, destinationNode);                
找到并返回两地图点间最近的路
  3.找到路径后,添加所经节点到PATH,到家后
         lastWaypoint = homeLocation.clone();mode = AT_HOME_MODE;
      并在家随机走动
  若不为WALKING_HOME_MODE,以速度1创建一条路径,添加新的节点到路径中,
         mode = READY_MODE;return path;

generateWaitTime()   //产生在家的等待时间
mode == AT_HOME_MODE时:
DAY_LENGTH - ((SimClock.getIntTime() + DAY_LENGTH + timeDifference) % DAY_LENGTH);















0 0
原创粉丝点击