带有容量约束的车辆路径问题(CVRP)

该模型很难拓展到VRP的其他场景,并且不知道具体车辆的执行路径,因此对其模型继续改进。

C-W节约算法:

一、算法思想

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

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

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

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

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

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

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

```

clear clc tic %% 用importdata这个函数来读取文件 rc208=importdata('rc208.txt'); cap=1000; %% 提取数据信息 vertexs=rc208(:,2:3); %所有点的坐标x和y customer=vertexs(2:end,:); %顾客坐标 cusnum=size(customer,1); %顾客数 demands=rc208(2:end,4); %需求量 h=pdist(vertexs); dist=squareform(h); %距离矩阵,满足三角关系,暂用距离表示花费c[i][j]=dist[i][j] %% CW法构造CVRP初始解 [initvc,initTD,initvl]=initCVRP(rc208,cap); initNV=size(initvc,1); str1=['车辆行驶总距离 = ' num2str(initTD)]; disp(str1) str2=['车辆使用数目 = ' num2str(initNV)]; disp(str2) %% 判断最优解是否满足时间窗约束和载重量约束,0表示违反约束,1表示满足全部约束 flag=Judge(initvc,cap,demands); %% 检查最优解中是否存在元素丢失的情况,丢失元素,如果没有则为空 DEL=JudgeDel(initvc); %% 画出配送路线图 vertexs=rc208(:,2:3); %所有点的坐标x和y drawBest(init_vc,vertexs); toc ```

【路径规划】基于节约算法实现CVRP问题相关推荐

  1. 合肥市出行地铁路径规划——基于Dijkstra算法

    合肥市出行地铁路径规划--基于Dijkstra算法 1. 引言 2. 导入相应的模块 3. 申请高德地图的API 4. 获取合肥地铁数据 5. 计算合肥各地铁站点之间的距离 6.寻找最近的地铁站 7. ...

  2. 自动驾驶路径规划——基于概率采样的路径规划算法(RRT、RRT*)

    目录 1. RRT算法背景 1.1 RRT算法核心思想 1.2 RRT算法优缺点 2. 经典RRT算法 2.1 RRT算法流程 2.2 RRT伪代码 3. 基于目标概率采样 4. RRT*算法 4.1 ...

  3. 【Matlab路径规划】A_star算法智能仓储机器人移动避碰路径规划【含源码 1180期】

    一.代码运行视频(哔哩哔哩) [Matlab路径规划]A_star算法智能仓储机器人移动避碰路径规划[含源码 1180期] 二.matlab版本及参考文献 1 matlab版本 2014a 2 参考文 ...

  4. 【Matlab路径规划】A_star算法机器人栅格地图路径规划【含源码 116期】

    一.代码运行视频(哔哩哔哩) [Matlab路径规划]A_star算法机器人栅格地图路径规划[含源码 116期] 二.matlab版本及参考文献 1 matlab版本 2014a 2 参考文献 [1] ...

  5. 【路径规划】Astart算法——图文直观解析

    Astart算法详解 1. Astart算法路径搜索原理 2. 栅格网络的Astart算法 3. Astart算法优缺点 1. Astart算法路径搜索原理   Dijkstra算法已经是非常经典的求 ...

  6. 全局路径规划:图搜索算法介绍6(A star)Matlab算法实现

    本文接:全局路径规划:图搜索算法介绍2(A star) https://blog.csdn.net/gophae/article/details/103061702 % This is Yunchen ...

  7. 【优化选址】基于节约算法求解考虑碳排放及带时间窗的物流选址问题附matlab代码

    1 简介 基于节约算法求解带时效性约束的物流中心选址问题.分析选址问题的时效性约束条件,构造带时效性约束的物流中心选址模型,利用节约算法设计选址模型的精确算法,并给出具体算例,验证模型和算法的可行性. ...

  8. 【VRP问题】基于节约算法CW求解带硬时间窗的车辆路径规划问题(VRPTW)matlab源码

    1 简介 研究了物流配送中多车运输的集货与送货车辆路径规划问题,以增加时间惩罚费用的方式插入软时间窗约束,将租车费用,货车运输费用和时间惩罚费用三者之和最小作为优化目标,建立数学模型.采用启发式节约算 ...

  9. matlab蚁群算法 路径规划,基于蚁群算法的机器人路径规划MATLAB源码

    基于蚁群算法的机器人路径规划MA TLAB源码 使用网格离散化的方法对带有障碍物的环境建模,使用邻接矩阵存储该环境,使得问题转化为蚁群算法寻找最短路径. function [ROUTES,PL,Tau ...

最新文章

  1. windows 2003服务器不断向外发包解决方法 php程序
  2. Redis Template使用append方法不起作用的解决办法以及序列化/反序列化的解释
  3. java.lang.AbstractMethodError: javax.servlet.jsp.JspFactory.getJspApplicationContext(Ljavax/servlet/
  4. Hadoop 2.2.0 集群搭建
  5. NAS优缺点完全剖析
  6. jvm jstat_使用jstat报告自定义JVM指标集
  7. 解决Failed to connect session for conifg 故障
  8. [html] 如何解决input在Firefox和Chrome中高度不一致的问题?
  9. 从VC++到GCC移植:谈两者的语法差异
  10. pandas 学习(二)—— pandas 下的常用函数
  11. 啊这,C++现在学还来的及吗?
  12. 走进C/C++函数的名字改编
  13. css对于文字过长加省略号
  14. JeeSite 工作流Activiti的应用实例
  15. Maven—Eclipse如何创建Maven项目
  16. 拓端tecdat|基于r语言的疾病制图中自适应核密度估计的阈值选择方法案例
  17. bcdboot修复win10引导并通过ubuntu live USB安装grub
  18. 图像的三次B样条插值原理与C++实现
  19. 交换机和路由器有什么区别
  20. python 好用的库存尾货女装_利用python对女装评价进行分析

热门文章

  1. Android视频加密那点事儿!
  2. Mooc上的中国大学排名爬虫
  3. Go 语言学习:Go 语言之旅——练习题及参考答案
  4. 转载 高德瓦片Url解析
  5. echarts3点击事件及获取index值
  6. PHP 亚洲常用时区编码
  7. python的两种计时方式
  8. 检索 COM 类工厂中 CLSID 为 {00024500-0000-0000-C000-000000000046} 的组件失败,原因是出现以下错误: 8000401a 因为配置标识不正确...
  9. Android源码编译 HTC One/M7中文触摸CWM6.0.3.7版Recovery,专为白卡机(S-OFF)量身打造,再也不用担心线刷不了Recovery了
  10. 设计模式 | 工厂方法模式(Factory Method)