【导语】车辆路径问题是经典的组合优化问题,通过学习如何编写求解该问题的智能优化算法,可以将该求解思路扩展到类似的组合优化问题,帮助大家更好的理解组合优化问题的求解过程。

1、遗传算法(GA_VRP)求解基本的车辆路径问题,详见文章https://zhuanlan.zhihu.com/p/125779424,Matlab代码链接已上传至【智能优化算法】公众号。

2、考虑到实际中的车辆路径问题较为复杂,约束条件和优化目标往往不同,需要在GA_VRP程序上进行修改,满足你的车辆路径问题的所有约束条件,并更换优化目标。以知友提供的某食品厂配送案例为例(19个客户),采用单车型(最大载重为6吨)车辆进行配送,优化目标为运输成本最低,包括了空载的运输成本及载重的运输成本,修改现有的遗传算法求解该车辆路径问题(GA_VRP_1算法),详见知乎文章https://zhuanlan.zhihu.com/p/141369039,Matlab代码链接已上传至【智能优化算法】公众号。

3、知友提供的某食品厂配送案例第二问题涉及到4吨车辆、6吨车辆两种车型,空载费用分别为0.2吨/公里、0.4吨/公里,其他条件与第一问相同,该如何制定调度方案,确定两种车型的数量及配送路线,使得整个的运输成本最低?

一、多车型车辆路径问题

现代物流配送过程中,配送货物种类繁多,配送量增大,使得车型不再是单一的,车辆类型倾向于多样化,这对车辆路线优化提出了新的要求。而在一般车辆路径问题中,通常将为顾客点进行配送任务的车辆假设成具有相同的特征,即具有相同的装载能力、最大行驶距离、固定成本等属性,这与实际问题明显存在着差异。因此多车型车辆路径问题不仅符合实践,而且也是对一般车辆路径问题的拓展,丰富了车辆路径问题理论研究。

多车型车辆路径问题的其他约束条件与基本的车辆路径问题一致,区别在于基本的车辆路径问题将实际问题简化为同一型号的车辆,而多车型车辆路径问题有不同型号的车辆,其最大运载量、最大行驶路程、车辆费用等方面不同。

二、遗传算法求解多车型车辆路径问题

本文求解多车型车辆路径问题的遗传算法是在知乎文章https://zhuanlan.zhihu.com/p/141369039中GA_VRP_1算法基础上修改而来,主要对解码操作、计算目标值函数2个子函数进行修改,满足第二问多车型车辆路径问题的约束条件,同时相应修改了部分主函数代码。

1、遗传操作

为减少工作量,采用模块化编程思想,尽量不修改遗传操作的各子函数,因此仍采用整数编码,交叉操作、变异操作、选择操作因为是在染色体层面通过一系列方法产生新解,不涉及到问题的约束条件和优化目标,因此上述操作的子函数不需要修改。

2、约束条件

基本的车辆路径问题的约束条件为:(1)每条配送路径上各客户的需求量之和不超过配送车辆的载重量;(2)每条配送路径的长度不超过配送车辆一次配送的最大行驶距离;(3)每个客户的需求必须满足,且只能由一台配送车辆送货。

知友案例的约束条件包括①车辆每日的工作时长4小时,该约束在已知车辆的行驶速度时是车辆最大行驶距离约束的等价约束,包括车辆行驶时间和在客户点的卸货时间;②不同车型的最大载重量不同。

3、计算目标值

不同车型的空载费用不同,因此在计算目标值时需要确定车辆的型号,再根据对应的空载费用进行计算。

三、编写GA_MCVRP程序

1、解码操作

因该问题中包含最大载重量4吨/6吨两种车型,需要在第一问GA_VRP_1算法基础上对解码操作进行修改。

本文解码操作的主要思想为,分别安排4吨、6吨车辆进行配送,在满足最大载重量及行驶时间约束前提下,计算在同一配送路径上两种车型的实际运载量,选择实际运载量接近各自车型最大载重量(即闲置载量最低)的车辆进行配送。比如某一配送路径已经确定,若选择4吨车,车辆路径为[7-6],则4吨车的实际运载量为2.5吨,闲置载量=4-2.5=1.5吨;若选择6吨车,车辆路径为[7-6-11],则6吨车的实际运载量为5吨,闲置载量=6-5=1吨;因此为减少车辆的配送次数,降低车辆空载运输成本,因此选择6吨车进行配送。

Matlab编码需要分别根据4吨车/6吨车的最大载重量、车辆运行时间等两条约束进行分段解码,比较两个车型的空载量,选择空载量低的车型,再根据车辆路径中客户编号依次循环解码,具体操作详见解码子函数【decode_MCVRP】。

2、计算目标值

优化目标为运输费用最小,需要进行分段计算,因不同车型的运输费用仅为车辆空载时不同,4吨车空载的费用为0.2元/公里,6吨车空载的费用为0.4元/公里,因此在编写计算目标值子函数【parameter_MCVRP】时,从客户点到客户点的运输费用计算公式不变,仅仅需要判断空载段是哪种车型,空载费用=空载运输距离*不同车型单位距离的空载费用。

3、主函数

设置问题的数据信息与遗传算法的参数,将解码子函数【decode_MCVRP】、计算目标值子函数【parameter_MCVRP】的输入参数进行调整,其他部分不需要修改,点击运行即可求出多车型车辆路径问题的最优路径,再对该最优路径执行一次解码操作【decode_MCVRP】,参见文章【如何将遗传算法的染色体映射为车辆路径问题的解 - 南柯一梦的文章 - 知乎https://zhuanlan.zhihu.com/p/149503847】,最终求得此次运输费用最低的车辆调度方案。

四、优化结果

通过遗传算法求解多车型车辆路径问题(GA_MCVRP)得到最优路径为【13-19-14-11-12-8-1-4-6-5-7-2-9-3-10-17-15-16-18】,解码操作得到的车辆调度方案为:

  • 4吨车【0-13-19-14-0】
  • 4吨车【0-11-12-0】
  • 6吨车【0-8-1-0】
  • 4吨车【0-4-6-5-0】
  • 4吨车【0-7-2-0】
  • 4吨车【0-9-3-0】
  • 4吨车【0-10-17-0】
  • 4吨车【0-15-16-0】
  • 4吨车【0-18-0】

4吨车共计8趟次、6吨车1趟次,运输费用最小为【849.2元】。

GA_MCVRP求解多车型车辆路径问题结果

本文在求解单车型车辆路径问题的遗传算法基础上,修改现有的GA_VRP程序来求解多车型车辆路径问题(GA_MCVRP算法,已上传至公众号:【智能优化算法】)。【以上内容仅供交流,于2020年11月28日】

如有疑问请及时交流,后面我也会将大家的疑问整理出来,或者有更好的建议也请提给我,最后谢谢大家阅读。欢迎大家关注微信公众号:【智能优化算法】,也是希望能有一个平台分享优化算法,希望能得到大家的关注。有问题及时私信我,我尽可能及时回复,谢谢大家。

智能车路径提取matlab_遗传算法求解多车型车辆路径问题相关推荐

  1. 【VRP】基于matlab遗传算法求解多中心车辆路径规划问题【含Matlab源码 1965期】

    ⛄一.VRP简介 1 遗传算法基本原理 遗传算法 (Genetic Algorithm, GA) 是由美国密歇根大学的John Holland教授首先提出的, 它基于达尔文的进化论和孟德尔的遗传学说, ...

  2. 【VRP问题】基于模拟退火算法求解多车型车辆路径规划问题VRP

    模拟退火算法来源于固体退火原理,将固体加温至充分高,再让其徐徐冷却,加温时,固体内部粒子随温升变为无序状,内能增大,而徐徐冷却时粒子渐趋有序,在每个温度都达到平衡态,最后在常温时达到基态,内能减为最小 ...

  3. 【路径规划】基于水滴算法求解多仓库车辆路径规划问题matlab代码

    1 简介 车辆路径优化问题是典型的组合优化问题,是基于系统优化的思想,对运输作业服务中车辆的路径进行优化的方式,以达到运输作业服务中目标函数最优化的问题.随着经济节奏的加快对运输作业服务所提出的要求多 ...

  4. 【VRP】基于matlab模拟退火算法求解单中心多车辆路径规划问题【含Matlab源码 1072期】

    ⛄一.模拟退火算法简介 1 模拟退火算法的原理 模拟退火算法(SA)是一种适用于大规模组合优化问题的有效近似算法,来源于对固体退火过程的模拟.统计力学表明,在给定初始温度的条件下,通过将温度缓慢降低, ...

  5. vrp车辆路径问题 php,蚁群算法在车辆路径问题(VRP)中的应用.ppt

    蚁群算法在车辆路径问题(VRP)中的应用 ◆割平面法(Cutting Planes Approach)[6] 割平面法求解VRP问题(A)的基本思想是,在求解相应的不含整数约束的VRP问题(B)上,增 ...

  6. 【优化求解】基于matlab遗传算法求解立体仓库出入库路径优化问题【含Matlab源码 2028期】

    ⛄一.遗传算法仓库货位简介(仅供参考) 1 问题描述 1.1 自动化立体仓库出入库路径优化问题描述 自动化立体仓库如图1所示,主要是由以下几个部分组成: 货架,一般为钢结构构成的存储商品的单元格,单元 ...

  7. 【路径规划】遗传算法求解多式联运运输问题【含Matlab源码 877期】

    ⛄一.联运运输简介 1 问题描述 若干城市点之间构成了物流运输网络,每座城市与城市之间都有不超过内河.铁路.公路和航空运输方式:考虑与行驶距离线性相关的旅行成本和每种运输方式之间转换的费用(中转费用) ...

  8. 【路径规划】基于遗传算法求解静态外卖骑手路径规划附matlab代码

    1 简介 ​据中国互联网络信息中心发布的第 44 次<中国互联网络发展状况统计报告>指出,截至 2019 年 6 月,我国网民规模达到 8.54 亿,较 2018 年底增长 2598 万, ...

  9. matlab遗传算法求解冷链路径优化问题

    冷链描述 随着人民生活水平的不断提高和消费观念的不断转变,人们对生鲜农产品的需求量不断加大,对生鲜农产品的品质和时效要求也越来越严格.而生鲜农产品保鲜时间短.易腐性高的特点要求其在运输.储存.配送等环 ...

最新文章

  1. 模拟Servlet本质
  2. 优贝共享数据交易所网_2020.9.9号币圈简报:水天共享数据迁移,链淘公告明天开始减产...
  3. Linux编程简介——动态链接库
  4. 人工智能开发语言排行榜:不死Java,不朽C/C++,新贵Python
  5. QT 生成二维码接口封装
  6. 富文本编辑器宽度自适应及取消自动保存功能
  7. 从HDFS的写入和读取中,我发现了点东西
  8. 联邦调查局严重夸大了加密威胁数字,从而想获得对手机的访问权限
  9. python死锁案例_Python 多线程死锁
  10. windows安装python3步骤_windows下python3第三方库安装方法总结
  11. 在Eclipse4.2x中安装最新版插件WindowsBuilder
  12. 基于jsp的网上书店_[内附完整源码和文档] 基于JSP网上零食销售系统的设计与实现...
  13. str中的join方法,fromkeys(),set集合,深浅拷贝(重点)
  14. HBuilder X 未检测到手机或模拟器(安卓端)
  15. centos 如何查看操作系统是哪个版本
  16. 简单了解一些分布式术语,分享给大家
  17. Citrix 桌面虚拟化解决方案与VMware桌面虚拟化解决方案对比
  18. 360快剪辑怎么使用 360快剪辑软件使用方法介绍
  19. 各大公司2009年IT售前工程师薪水
  20. Nand Flash原理分析与编程

热门文章

  1. php ftp 下载大文件,文件在用php(ftp)下载后损坏[重复]
  2. c语言指针地址交换程序,C语言-基础教程-指针的地址分配
  3. Intel Core Solo/Duo处理器架构/微架构/流水线 - 前端/数据预取/SSE3
  4. AliOS Things基于USB通道外接4G模组的方案
  5. 计算机主机硬件详细介绍,计算机系统的硬件和系统软件详细介绍
  6. matlab磁铁模拟,用matlab-模拟环形磁铁的磁场分布
  7. FBI曾要求加密服务商Lavabit监视斯诺登邮件
  8. jstat分析JVM内存
  9. 【转载】Scarbee Pre-Bass 贝司的使用教程
  10. [Android]使用Gradle提交自己开源Android库到Maven中心库