Agv、Rgv 车辆控制调度系统开发第七篇-选车算法
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 车辆控制调度系统开发第七篇-选车算法相关推荐
- Agv、Rgv 车辆控制调度系统开发第四篇
Agv.Rgv 车辆控制调度系统开发第四篇 车辆调度模拟器 前言 一.车辆模拟器是什么? 二.如何做模拟器 1.动作仿真模拟器 2.完全仿真模拟器 总结 下期预告 系列文章链接 其他文章 新篇章 前言 ...
- Agv、Rgv 车辆控制调度系统开发第五篇-避碰
Agv.Rgv 车辆控制调度系统开发第五篇-避碰 前言 上期结束的时候说讲避碰,这期就主要谈一下避碰的原理,避碰是之前给其他人讲调度时,别人提了一个场景里面有三种车,10种货架问我怎么调度,当时确实被 ...
- Agv、Rgv 车辆控制调度系统开发第六篇-流程控制器
Agv.Rgv 车辆控制调度系统开发第六篇-流程控制器 Agv.Rgv 车辆控制调度系统开发第六篇-流程控制器 Agv.Rgv 车辆控制调度系统开发第六篇-流程控制器 前言 一.PCS是什么? 二.P ...
- Agv、Rgv 车辆控制调度系统开发第三篇
Agv.Rgv 车辆控制调度系统开发第三篇地图编辑器 Agv.Rgv 车辆控制调度系统开发第三篇地图编辑器 Agv.Rgv 车辆控制调度系统开发第三篇地图编辑器 前言 一.GOJS 二.使用步骤 1. ...
- Agv、Rgv 车辆控制调度系统开发第八篇-错误纠正
Agv.Rgv 车辆控制调度系统开发第八篇-错误纠正 前言 开始写博客到现在也有一年多了,这一年多分析了调度的很多东西,我也全网搜索过,网上真正分享调度知识的基本没有,虽然我也没有把核心的代码展示出来 ...
- Agv、Rgv 车辆控制调度系统开发第二篇
系列文章目录 Agv.Rgv 车辆控制调度系统开发第二篇(理论片) 文章目录 系列文章目录 前言 一.什么是调度系统? 问题 二.问题分析 1.寻找路线 2.避碰算法 3.移车算法 4.解锁算法 总结 ...
- Agv、Rgv 车辆控制调度系统开发第一篇
Agv.Rgv 车辆控制调度系统第一篇 为什么要做这个系统 先看作品 从头讲起 算法讲解 编程语言 从哪里开始 继续深入 预告 链接 问题解答 为什么要做这个系统 说白了是为了赚钱,在一个项目中发现公 ...
- Agv、Rgv 车辆控制调度系统开发知识点篇
拖欠更新说明 因为最近工作比较忙,把更新的事给忘了,看到好多人的催更,然后紧急补上一篇大家先了解下知识点 创建目录结构 上一次讲到,做调度系统需要的几个目录 1.寻路 2.避碰 3.解锁 4.任务调度 ...
- 车辆控制调度系统(问题解答)
文章目录 前言 一.为什么把算法单独列出来? 前言 刚才有同学私信我说为什么把算法单独列出来,在这里我单独开一篇问题解答的博客,有问题都可以在这下面评论,不用私信,我肯定会解答的. 另外留下我的微信方 ...
- 公安情报指挥一体化合成作战平台建设,指挥调度系统开发
公安情报指挥一体化合成作战平台建设,指挥调度系统开发 华盛恒辉软件开发公安情报指挥一体化分解作战平台围绕"集成"."场景"."工具"三个关键 ...
最新文章
- Python创建和访问字典
- 演讲实录 | DevOps五大理念及其落地实践
- 【一篇文章搞懂】25K大牛甩出的超详细面试总结
- 通过python实现卷积神经网络_Python 徒手实现 卷积神经网络 CNN
- 寻找想改变人工智能的“大人物”!2019百度奖学金正式启动
- JDK8新特性之Lambda表达式
- 免费申请 Office365 E5 开发者订阅
- java println和print_java中的print和println有区别吗
- File upload error - unable to create a temporary file in bUnknown/b on line
- Chrome浏览器showModalDialog兼容性及解决方案
- Flex入门的好书——《Flex3 Cookbook 中文版》
- 理解C语言——从小菜到大神的晋级之路(9)——多维数组
- Rasa课程、Rasa培训、Rasa面试系列之: Rasa客户案例T-Mobile电信公司
- Shell中的while用法
- SpringBoot学期总结
- 光猫及二级路由器Openwrt均开启IPv6,满足双层网络内IPv6的获取
- 2023湖南省中职网络安全任务书
- 二进制换算成八进制、十进制、十六进制
- ​Vue 3 这个坑我踩了,你们一定要小心
- 新浪sina.cn邮箱注册python版