Agv、Rgv 车辆控制调度系统开发第七篇-选车算法

文章目录

  • 前言
  • 一、选车算法
  • 二、分别讲解
    • 1.基于最短路线的选车算法
    • 2.基于递归算法 的选车算法
  • 总结

前言

我说过10期讲完调度,就一定会更新完,大家也不要再催更了,我会在有时间的时候更新,
这期讲一下选车算法,为什么选车也叫算法,因为现场运行的好坏选车起到了绝对作用,选择一辆对的车,车将少走很多弯路,大幅提升运送效率。

一、选车算法

选车算法的核心思想就是让车走最少的距离,为了走最少的距离这里面真的用到了算法。
这些年我一共实现了两套选车算法,第一套主要应用于车间场景50台一下。
第二种主要应用于仓储场景,台数不限制。
这两种算法各有优缺点

二、分别讲解

1.基于最短路线的选车算法

基于最短路线的,实际上也就是使用的最短路线算法,这一版算法的优点就是选择的车距离绝对是最短的,缺点就是对车辆数量有要求,测试发现50台是极限。


算法用的就是标准的最短路线算法,最难的是选车模型的创建,我把选车模型的代码贴在下面供大家参考。

这一版算法已经经过现场验证

 /// <summary>/// 给选车算法创建一个简单的虚拟模型/// </summary>/// <param name="name"></param>/// <param name="edges"></param>/// <param name="Tier"></param>public void add_vertex(string name, Dictionary<string, int> edges,int Tier){bool i = false;if (!DispatchData.Vertices.ContainsKey(Tier)){DispatchData.Vertices.Add(Tier, null);}foreach (var v in DispatchData.Vertices){if(v.Key== Tier){if (v.Value == null){continue;}foreach (var item in v.Value){if (item.Key == name){foreach (var t in edges){DispatchData.Vertices[Tier][name].Add(t.Key, t.Value);}i = true;}}}  }if (i == false){if (DispatchData.Vertices[Tier] == null){var c = new Dictionary<string, Dictionary<string, int>>();c.Add(name, null);DispatchData.Vertices[Tier]=c;}DispatchData.Vertices[Tier][name] = edges;}}

2.基于递归算法 的选车算法

第二版算法本质上就是递归算法,这个算法的缺点就是选择的车是相对距离比较近的,不是绝对近的,优点就是对车辆数量没有要求,写到这里突然想到为什么不结合起来用不就完美了吗?哈哈

总结

其实我把调度的核心思想和创作方式都分享了,只是没分享源码,其实即使我分析源码大家也看不懂,
即使看懂了也没有用,像调度这种系统代码量真的不多,但是代码质量真的高,其实我的学历不高只有小学,为了写好调度,我分别学习了高等数据线微积分,向量,几何学等,其实做这种系统上过大学的有绝对优势。

Agv、Rgv 车辆控制调度系统开发第七篇-选车算法相关推荐

  1. Agv、Rgv 车辆控制调度系统开发第四篇

    Agv.Rgv 车辆控制调度系统开发第四篇 车辆调度模拟器 前言 一.车辆模拟器是什么? 二.如何做模拟器 1.动作仿真模拟器 2.完全仿真模拟器 总结 下期预告 系列文章链接 其他文章 新篇章 前言 ...

  2. Agv、Rgv 车辆控制调度系统开发第五篇-避碰

    Agv.Rgv 车辆控制调度系统开发第五篇-避碰 前言 上期结束的时候说讲避碰,这期就主要谈一下避碰的原理,避碰是之前给其他人讲调度时,别人提了一个场景里面有三种车,10种货架问我怎么调度,当时确实被 ...

  3. Agv、Rgv 车辆控制调度系统开发第六篇-流程控制器

    Agv.Rgv 车辆控制调度系统开发第六篇-流程控制器 Agv.Rgv 车辆控制调度系统开发第六篇-流程控制器 Agv.Rgv 车辆控制调度系统开发第六篇-流程控制器 前言 一.PCS是什么? 二.P ...

  4. Agv、Rgv 车辆控制调度系统开发第三篇

    Agv.Rgv 车辆控制调度系统开发第三篇地图编辑器 Agv.Rgv 车辆控制调度系统开发第三篇地图编辑器 Agv.Rgv 车辆控制调度系统开发第三篇地图编辑器 前言 一.GOJS 二.使用步骤 1. ...

  5. Agv、Rgv 车辆控制调度系统开发第八篇-错误纠正

    Agv.Rgv 车辆控制调度系统开发第八篇-错误纠正 前言 开始写博客到现在也有一年多了,这一年多分析了调度的很多东西,我也全网搜索过,网上真正分享调度知识的基本没有,虽然我也没有把核心的代码展示出来 ...

  6. Agv、Rgv 车辆控制调度系统开发第二篇

    系列文章目录 Agv.Rgv 车辆控制调度系统开发第二篇(理论片) 文章目录 系列文章目录 前言 一.什么是调度系统? 问题 二.问题分析 1.寻找路线 2.避碰算法 3.移车算法 4.解锁算法 总结 ...

  7. Agv、Rgv 车辆控制调度系统开发第一篇

    Agv.Rgv 车辆控制调度系统第一篇 为什么要做这个系统 先看作品 从头讲起 算法讲解 编程语言 从哪里开始 继续深入 预告 链接 问题解答 为什么要做这个系统 说白了是为了赚钱,在一个项目中发现公 ...

  8. Agv、Rgv 车辆控制调度系统开发知识点篇

    拖欠更新说明 因为最近工作比较忙,把更新的事给忘了,看到好多人的催更,然后紧急补上一篇大家先了解下知识点 创建目录结构 上一次讲到,做调度系统需要的几个目录 1.寻路 2.避碰 3.解锁 4.任务调度 ...

  9. 车辆控制调度系统(问题解答)

    文章目录 前言 一.为什么把算法单独列出来? 前言 刚才有同学私信我说为什么把算法单独列出来,在这里我单独开一篇问题解答的博客,有问题都可以在这下面评论,不用私信,我肯定会解答的. 另外留下我的微信方 ...

  10. 公安情报指挥一体化合成作战平台建设,指挥调度系统开发

    公安情报指挥一体化合成作战平台建设,指挥调度系统开发 华盛恒辉软件开发公安情报指挥一体化分解作战平台围绕"集成"."场景"."工具"三个关键 ...

最新文章

  1. Python创建和访问字典
  2. 演讲实录 | DevOps五大理念及其落地实践
  3. 【一篇文章搞懂】25K大牛甩出的超详细面试总结
  4. 通过python实现卷积神经网络_Python 徒手实现 卷积神经网络 CNN
  5. 寻找想改变人工智能的“大人物”!2019百度奖学金正式启动
  6. JDK8新特性之Lambda表达式
  7. 免费申请 Office365 E5 开发者订阅
  8. java println和print_java中的print和println有区别吗
  9. File upload error - unable to create a temporary file in bUnknown/b on line
  10. Chrome浏览器showModalDialog兼容性及解决方案
  11. Flex入门的好书——《Flex3 Cookbook 中文版》
  12. 理解C语言——从小菜到大神的晋级之路(9)——多维数组
  13. Rasa课程、Rasa培训、Rasa面试系列之: Rasa客户案例T-Mobile电信公司
  14. Shell中的while用法
  15. SpringBoot学期总结
  16. 光猫及二级路由器Openwrt均开启IPv6,满足双层网络内IPv6的获取
  17. 2023湖南省中职网络安全任务书
  18. 二进制换算成八进制、十进制、十六进制
  19. ​Vue 3 这个坑我踩了,你们一定要小心
  20. 新浪sina.cn邮箱注册python版

热门文章

  1. 指纹识别 源代码中带有大量注解
  2. Spring中过滤器和拦截器
  3. iozone文件系统性能评测工具
  4. journalctl日志管理
  5. 用台达PLC485通信控制11台英威腾变频启动停止速度设定
  6. hls解密key获取失败_请求帮助。M3U8里的加密key无法下载。
  7. 升级JUnit5及其特性介绍
  8. kali安装QQ音乐
  9. LINUX udhcpc命令
  10. Android studio做中国象棋,等级1(简单单人操作)