OpenTCS 之 DefaultDispatcher 默认调度算法

一、Guice注入配置

  这里的Guice注入主要指DefaultDispatcherModule类的配置,具体的Guice用法不去详细讲解,主要介绍这个类注入了什么东西,明白了注入内容,相对更容易理解OpenTCS调度算法是基于哪些因素考虑的调度。
过滤器相关的注入
  • CompositeParkVehicleSelectionFilter 停车地点过滤器
  • CompositeReparkVehicleSelectionFilter 重新规划停车过滤器
  • CompositeRechargeVehicleSelectionFilter 车辆充电过滤器
  • CompositeTransportOrderSelectionFilter 订单过滤器
  • CompositeVehicleSelectionFilter 车辆过滤器
  • CompositeAssignmentCandidateSelectionFilter 候选过滤器
  • DefaultDispatcherConfiguration 读取配置策略 在kernel配置文件配置
  • OrderReservationPool 订单预定池
  • ParkingPositionSupplier 停车地点
  • RechargePositionSupplier 充电地点
车辆选择算法的注入
  • VehicleComparatorByEnergyLevel 按电量比较车辆
  • VehicleComparatorByName 按名称比较车辆
  • VehicleComparatorIdleFirst 按车辆空闲度比较
订单选择算法的注入
  • TransportOrderComparatorByAge 按运输订单时间比较
  • TransportOrderComparatorByDeadline 按运输订单按截止日期比较
  • TransportOrderComparatorByName 按运输订单名称比较
路由选择算法的注入
  • CandidateComparatorByCompleteRoutingCosts 比较完成时间的路由成本
  • CandidateComparatorByDeadline 按截至日期比较候选
  • CandidateComparatorByEnergyLevel 按电池电量比较候选
  • CandidateComparatorByInitialRoutingCosts 比较初始路由成本
  • CandidateComparatorByOrderAge 按订单时间
  • CandidateComparatorByOrderName 按订单名称
  • CandidateComparatorByVehicleName 按车辆名称
  • CandidateComparatorIdleFirst 按空闲度

二、算法入口

  DefaultDispatcher的dispatch()方法是调度算法的入口,到目前为止,我了解的调用入口有4个,或许还有别处会调用,但是有些不确定,详情可以全局搜索dispatch()方法。
  1. 订单生成
  2. 车辆空闲,状态为IDEL
  3. 电量下降
  4. 定时任务

三、算法简介

  调度算法的入口是dispatch()方法,但具体执行是在这个FullDispatchTask线程的run()方法里,这个run()方法大概做了七件事。
  1. checkNewOrdersPhase.run();
    检查新订单阶段 —> 检查仍处于原始状态RAW的运输订单,并尝试为分配做准备。
  2. finishWithdrawalsPhase.run();
    检查过程中涉及的车辆应该做什么。
  3. assignNextDriveOrdersPhase.run();
    分配下一个驱动器订单阶段
  4. assignSequenceSuccessorsPhase.run();
    在订单序列继续指派阶段
  5. assignOrders();
    检查尚未处理的车辆应该做什么
  6. rechargeVehicles();
    找出需要充电的车 创建充电的订单
  7. parkVehicles();
    寻找最佳的泊车位

四、文章小结

  上面简单介绍了调度算法做了哪些事情,但是具体怎么做,还未进行总结,如果有兴趣相互沟通学习的,敬请留言。

 
 

  以上内容实属个人总结,有不正之处,欢迎指导。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章