一、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();
    寻找最佳的泊车位

四、文章小结

  上面简单介绍了调度算法做了哪些事情,但是具体怎么做,还未进行总结,如果有兴趣相互沟通学习的,敬请留言。
  以上内容实属个人总结,有不正之处,欢迎指导。

OpenTCS 之 DefaultDispatcher 默认调度算法相关推荐

  1. haproxy各调度算法的实现方式及其应用场景

    haproxy各调度算法的实现方式及其应用场景 1. haproxy 静态调度算法 1.1 static-rr 1.2 first 2. haproxy 动态调度算法 2.1 roundrobin(默 ...

  2. linux服务器lvs,Linux的企业-LVS(Linux虚拟服务器)及FULLNAT设置

    一.Linux Virtual Server (linux虚拟服务) lvs工作于IOS七层模型的传输层,通过对TCP.UDP.SCTP.IPsec ESP.AH这些工作在四层的协议的支持,根据目标地 ...

  3. 构建负载均衡服务器之二 LVS详解及应用

    在上一篇中介绍了负载均衡及集群的原理,本篇主要介绍下下实现负载均衡的软件之LVS的原理及应用. 一.LVS的介绍 1.  LVS的定义 一般来说,LVS采用三层结构:负载调度器.服务器池.共享存储.工 ...

  4. 简述RHEL7新特性(一)

    RHEL7目前支持架构: 1,64-bit AMD 2,64-bit Intel 3,IBM POWER 4,IBM System z 5,不再支持x86 32bit 安装界面: 1,全新的安装界面 ...

  5. Nginx的继续深入(日志轮询切割,重写,负载均衡等)

    Nginx的访问日志轮询切割 通常什么情况Nginx会把所有的访问日志生成到一个制定的访问日志文件access.log里面,但时间一长,日志个头很大不利于日志的分析和处理. 有必要对Nginx日志进行 ...

  6. Nginx之反向代理与负载均衡实现动静分离实战

    Nginx之反向代理与负载均衡实现动静分离实战 什么是反向代理与负载均衡 Nginx仅仅作为Nginx  proxy反向代理使用的,因为这个反向代理功能表现的效果是负载均衡集群的效果. 负载均衡指的是 ...

  7. 从认证到调度,K8s 集群上运行的小程序到底经历了什么?

    作者 | 声东  阿里云售后技术专家 导读:不知道大家有没有意识到一个现实:大部分时候,我们已经不像以前一样,通过命令行,或者可视窗口来使用一个系统了. 前言 现在我们上微博.或者网购,操作的其实不是 ...

  8. 主nginx linux,Linux-实现双主模型的nginx的高可用

    1 [root@234c17 ~]# for i in {1..4};do curl www.a.com;curl www.b.com;sleep 1;done 2 234.57 3 234.77 4 ...

  9. Kubernetes从懵圈到熟练:认证与调度

    不知道大家有没有意识到一个现实,就是大部分时候,我们已经不像以前一样,通过命令行,或者可视窗口来使用一个系统了.现在我们上微博.或者网购,操作的其实不是眼前这台设备,而是一个又一个集群. 通常,这样的 ...

  10. LVS nat 负载均衡实验

    clint  本地物理机   192.168.0.196 (director)VIP                 192.168.0.146 (director)DIP               ...

最新文章

  1. id设置为10000开始
  2. MySQL不能查看表_mysql root用户登录后无法查看数据库全部表
  3. 17-Translation (XLAT) Tables Library
  4. SpringBoot中使用POI导出Excel时怎样循环数据库数据赋值
  5. 用Python制作酷炫的可视化报表。
  6. android跨进程事件注入(程序模拟用户输入)
  7. go利用反射实现任意类型切片删除元素
  8. python提取pdf表格信息
  9. 35岁遭遇互联网公司无情裁员,面试屡屡碰壁,原因竟是……
  10. 机器学习- 吴恩达Andrew Ng Coursera学习总结合集,编程作业技巧合集
  11. webgate 重构 工作进度计划
  12. Excel写入换行-JAVA
  13. openldap范例数据库mysql_用mysql作openldap的后台数据库
  14. storm java 例子_Storm 运行例子
  15. Cytoscape.js学习记录
  16. 群英传android,三国群英传官方网站-腾讯游戏-三国SLG手游新王者
  17. [渝粤教育] 西南科技大学 民事诉讼法学 在线考试复习资料
  18. win 下 使用工具 将苹果dgm镜像转为cdr镜像,供vm虚拟机安装使用
  19. 电脑dll文件缺失如何修复;DirectX修复工具,轻松搞定
  20. 舟山惠普服务器维修电话,【舟山HP(惠普)服务器配件】舟山HP(惠普)服务器配件报价及图片大全-列表版-ZOL中关村在线...

热门文章

  1. win10下实现bat转exe
  2. VB写的随机点名器代码
  3. Spring事务和事务传播机制
  4. 【FPGA】按键消抖
  5. 简单三步,教你搭建一个私有云盘
  6. 常用手机屏幕尺寸大小
  7. 绩效考核|绩效管理|绩效面谈|绩效述职|绩效汇报PPT模板
  8. 免费的在线PDF转换word网站推荐
  9. matlab程序 surf算法,SURF算法代码 matlab
  10. LQR轨迹跟踪——基于ROS系统和全向车实验平台