众所周知,节约里程法是一种贪婪算法,虽然求解质量比不上蚁群或者遗传算法,但是在求解精度要求不高的情况下,却可以快速求解得到一个接近最优的满意解。正因为如此,节约里程法很多情况下和其他启发式算法进行结合,由节约里程法快速计算得到的可行解作为启发式算法的初始解。

下面由我来详细讲解节约里程法的算法思想和求解思路

一、算法思想

节约里程法,顾名思义,是根据里程的节约值的大小来规划线路的。假设有一个单配送中心以及10个客户节点构成的配送系统,在满足载重约束的情况下,计算最少的车辆数和最短的总路径长度,如果用节约里程法进行求解,其算法思想解析如下:

1、首先将10个点分别和配送中心连线构成一个环路,计算从配送中心出发到达该点并回到配送中心的总里程。

2、然后,从任意点开始,做节点的合并,即将相邻的两个点的两条子路径合并成一条子路径,合并后的环路的总里程一定比原来两条子路径的总里程之和要少,计算减少的里程数。其实也就是得到10个点中任意两个点合并成一条子路径后的节约里程表。

3、对得到的节约里程表按照节约值降序排列,然后进行节点的合并和约束判断。

4、优先合并节约值大的两点,合并完一对点之后就要对节约里程表进行修订,去掉已合并的点和对应的节约值,重新降序排列,继续合并剩余的未合并的节点,注意,在合并的时候要分辨是在节点的左边还是右边进行插入,另外,考虑到载重约束,某一条子路径的总的转载量达到载重要求时就立即回到配送中心,停止加入新的节点。

5、如此,按照步骤4不断操作,等所有的节点都被合并之后,就完成了节约里程法的cvrp的求解了。

插入核心的合并过程的代码,如下图中代码所示:

for i=(ii+1):size(svt) if     (svt(i,2)==solut(1,1))&&(isempty(find(svt(i,3)==solut))==1)&&((A(3,(svt(i,3)+1))+zhuang)<=rong);   %从最大的小于初始解对应的最大节约值对应的坐标判断(左坐标等于最优解的左坐标,并且右坐标不等于最优解的右坐标,并且容量不超)solut=[svt(i,3),solut];  %如满足条件,将右坐标加到路径的左侧sv=sv+svt(i,1);zhuang=A(3,(svt(i,3)+1))+zhuang;elseif (svt(i,2)==solut(1,length(solut)))&&(isempty(find(svt(i,3)==solut))==1)&&((A(3,(svt(i,3)+1))+zhuang)<=rong);solut=[solut,svt(i,3)];%如满足条件,将右坐标加到路径的右侧sv=sv+svt(i,1);zhuang=A(3,(svt(i,3)+1))+zhuang;elseif (svt(i,3)==solut(1,1))&&(isempty(find(svt(i,2)==solut))==1)&&((A(3,(svt(i,2)+1))+zhuang)<=rong);solut=[svt(i,2),solut];sv=sv+svt(i,1);zhuang=A(3,(svt(i,2)+1))+zhuang;elseif  (svt(i,3)==solut(1,length(solut)))&&(isempty(find(svt(i,2)==solut))==1)&&((A(3,(svt(i,2)+1))+zhuang)<=rong);solut=[solut,svt(i,2)];sv=sv+svt(i,1);zhuang=A(3,(svt(i,2)+1))+zhuang;elsecontinueendend

展示某算例1CVRP的节约里程法的最优解的路径分配结果,如下图所示:

展示某算例2 CVRP的节约里程法的最优解的路径分配结果,如下图所示:

感兴趣朋友们请留言或者私信 ,进一步互相交流学习进步!谢谢。

节约里程法—单配送中心CVRP求解相关推荐

  1. 求解VRP问题的节约里程法、sweep扫描算法和λ互换法

    第05章  求解容量约束车辆路径问题的启发式算法 Edited by Jiannywang@163.com 目  录 5.1 节约里程法. 1 5.1.1 C-W节约算法简介. 1 5.1.2 C-W ...

  2. 节约里程法java代码_患者,男,70岁,有多年排尿困难,呈淋漓状,近2年来双侧腹股沟区出现半年圆形肿块,站立时明显,平卧后消失,体检时压迫内环肿块仍出现,诊断为...

    In cross-cultural training process, language can have a important impact on social adaptation. 关于环己烷 ...

  3. matlab节约里程法_芳烃产业链里程碑:唐山旭阳30万吨/年苯乙烯项目一次性开车成功...

    近日,中国旭阳集团(1907.HK)旗下唐山旭阳30万吨/年苯乙烯项目分析化验合格后的苯乙烯从退料管线切至产品采出管线,标志着年产30万吨苯乙烯装置各流程全部打通,产品合格采出,装置一次性开车成功,使 ...

  4. php 类 单例,PHP里的单例类写法实例

    PHP里的单实例类在进行数据交换,节省内存上还是很有意义的.写个简单例子. 类1,单实例类本身: class UTIL { private static $instance; public funct ...

  5. 【单目标优化求解】基于matlab增强型黑猩猩优化器算法求解单目标优化问题【含Matlab源码 2013期】

    ⛄一.获取代码方式 获取代码方式1: 完整代码已上传我的资源:[单目标优化求解]基于matlab增强型黑猩猩优化器算法求解单目标优化问题[含Matlab源码 2013期] 点击上面蓝色字体,直接付费下 ...

  6. 【单目标优化求解】基于matlab黑猩猩算法求解单目标问题【含Matlab源码 1413期】

    一.获取代码方式 获取代码方式1: 完整代码已上传我的资源:[单目标优化求解]基于matlab黑猩猩算法求解单目标问题[含Matlab源码 1413期] 点击上面蓝色字体,直接付费下载,即可. 获取代 ...

  7. 「Python与地震工程」单自由度体系求解之Newmark-β法

    「Python与地震工程」单自由度体系求解之Newmark-β法 原理 Newmark-β法是地震工程领域最经典的逐步积分算法. 推导过程请查阅结构动力学或地震工程学教材,此处仅简单列出逐步递推公式. ...

  8. 【VRP问题】基于遗传算法求解带有时间窗、车载容量限制、多车辆、单配送中心路径优化VRPTW(多约束)matlab源码

    1 数学模型 (1)有关模型的说明和假设 1)模型中的已知量有:各需求点的位置坐标.各需求点的物料需求数量,各需求点的物料的到达时间要求,配送中心到各需求点的最短行驶距离,各需求点互相之间的最短运输距 ...

  9. 相机模型与标定(六)--单应性求解

    原文: http://www.360doc.com/content/14/0410/14/10724725_367760906.shtml 在计算机视觉中,平面的单应性被定义为一个平面到另外一个平面的 ...

  10. [从零手写VIO|第五节]——后端优化实践——单目BA求解代码解析

    长篇警告⚠⚠⚠ 目录 solver 全流程回顾 Solver三要素 Solver求解中的疑问 核心问题 代码解析 1. TestMonoBA.cpp 2. 后端部分: 2.1 顶点 2.2 边(残差) ...

最新文章

  1. 精心安利8个良心好用的学习神器和办公神器
  2. dedecms自定义表单如何添加发布时间功能
  3. python 矩阵点乘_python相乘矩阵
  4. MCMC笔记Metropilis-Hastings算法(MH算法)
  5. 152. 城市游戏【单调栈】
  6. java合集框架第一天
  7. c语言330转化成字符,c/字符串,字符转数字,数字转字符(转)
  8. c# 泛型List的定义、作用、用法
  9. 百钱买白鸡与啤酒饮料
  10. 单片机c语言检测压力值,基于单片机的压力检测系统设计论文.doc
  11. python爬虫:爬取某网站视频
  12. bzoj3210: 花神的浇花集会
  13. 网络流24题 洛谷 2763 试题库问题
  14. eclipse汉化教程(官方汉化包,傻瓜式操作,附带中英文快捷切换方式以及常见问题解决方案)
  15. 文件服务器phpstudy,使用phpstudy搭建ftp服务器
  16. oracle cdr是什么,基础:CDR软件中曲线工具的使用
  17. obtain,get,gain有什么区别
  18. 【观察】重塑质量管理体系,筑起车企数字化转型“护城河”
  19. vue基于webpack-theme-color-replacer 线上实时修改antd element ui主题色
  20. ATTck 命令执行 —— 远程动态数据交换

热门文章

  1. 信息安全技术(黑客攻防) 入门
  2. MMDetection2.XX-Necks之FPN源码解析
  3. 服务器如何用pe系统安装,pe下安装服务器系统安装教程
  4. python构造icmp数据包_python – 在scapy中发送ICMP数据包并选择正确的接口
  5. Three.js学习笔记①---搭建本地three.js官网(来自B站老陈视频)
  6. SAO Utils 农历与股票插件
  7. 2018java程序员面试题整理
  8. weblogic安装及部署
  9. 路由守卫 Maximum call stack size exceeded
  10. echarts全国城市经纬坐标json文件