车辆路径问题的基本操作

  • 0.引言
  • 1.解的表示方法
    • 1.1 基于分解的解表示
    • 1.2基于序列的解表示
  • 2.构造方法
  • 3.优化算子
    • 3.1基于分解的解表示的优化算子
    • 3.2基于序列的解表示的优化算子
      • 3.2.1 交叉算子
      • 3.2.2 变异算子

0.引言

  车辆路径问题一般被描述为:对一系列客户点,组织适当的行车路线,使车辆有序地通过它们,在满足一定的约束条件(如车辆容量限制等)下,达到一定的目标(如路程最短等)。由于车辆路径问题是NP难问题,很难在有限的时间内获得满意的解。(元)启发式方法能够在合理的计算时间内针对大规模问题得到高质量的解。
  启发式算法的基本思想:首先根据具体的问题构造初始解,然后不断得对存在的解采用优化操作进行优化,直到满足终止条件时,返回最终获得的解。在启发式算法中,如何生成初始解和如何对解进行优化直接影响启发式算法的性能。本博客首先介绍了车辆路径问题解的表示方法,然后给出了两种生成解的构造方法,最后给出了针对不同解形式的优化算子,其细节如下所示。

1.解的表示方法

  车辆路径问题一般被描述为:对一系列客户点,组织适当的行车路线,使车辆有序地通过它们,在满足一定的约束条件(如车辆容量限制等)下,达到一定的目标(如路程最短等)。车辆路径问题的解由不同的表示方式,分别为: 基于分解的解表示和基于序列的解表示。

1.1 基于分解的解表示

  基于分解的解表示是一组路径 R={r1,r2,...,rM}R = \{ {r_1},{r_2},...,{r_M}\}R={r1​,r2​,...,rM​},其中rk{r_k}rk​ 是路集R中的第k条路径。每条路径由其服务的客户点表示,形如rk=<c0k,c1k,...,cNkk,cNk+1k>{r_k} = < c_0^k,c_1^k,...,c_{{N_k}}^k,c_{{N_k} + 1}^k >rk​=<c0k​,c1k​,...,cNk​k​,cNk​+1k​> ,其中cikc_i^kcik​表示第k条路径中第i个客户点,c0k=cNk+1k=0c_0^k = c_{{N_k} + 1}^k = 0c0k​=cNk​+1k​=0 表示车场。基于分解的解表示方法如图1所示:

1.2基于序列的解表示

  基于序列的解表示,又称先路径,后聚类的方法。可以用图来表示,如图2:
上图中存在一个中心车场和围绕它的一组客户点。首先,我们形成了一个从车场到周围所有客户点,并最后返回车场的“大路线”(即,一辆车访问所有客户包括仓库);然后,将这个“大路线”最优地划分为一组可行的车辆路线;最后,将车辆路线安排给车辆。这就是先路径,后聚类的方法的主要内容。

2.构造方法

  在这一节中介绍两个构造方法,分别为基于插入的构造方法和基于成本的构造方法,如算法1和算法2所示。

3.优化算子

  本节将针对不同的解表示方法,介绍其采用的优化算子。

3.1基于分解的解表示的优化算子

  这种解的表示方法以路径为优化单位,其邻域操作分为路径间操作和路径内操作,如图3所示:

  N1{N_1}N1​从选定的路径中随机地选择一个客户,然后将该客户从现有路径中删除,最后重新将其插入到所有合法位置中的最好位置。如图 3-4 所示,客户 2 从路径1 中被选择出来,插入到路径 2 中。

  N2{N_2}N2​从选定的路径中随机地选择任意多个客户(不多于该路径中所有客户的个数),然后将这些客户依次重新插入到其对应的最好位置。如图 3-5 所示,客户 2 和客户 3 从路径 1 中被选择出来,然后客户 2 被插入到路径 2 中,客户 3 被插入到路径 3 中,一条新的路径。

  N3{N_3}N3​交换两条路径中的客户序列。具体操作如下:首先,随机选择两条路径。接着,在其中一条路劲中随机选择一个位置,而另一条路径中则尝试所有可能的位置。然后,在两条路径中,分别将选择出来的位置以后的所有客户看作一个客户序列。最后,交换这两个客户序列,并从中选择出提升最大的解。如图 3-6 所示,在路径 1 中,客户 3 对应的位置被选择出来,该位置以后所有的客户(客户2 和客户 8 )看作客户序列 I 。在路径 2 中,则尝试所有的可能,包括三种可能,分别为车场 0 、客户 1 和客户 7 对应的位置。最终,最好的解保留下来。客户 1对应的位置被作为选择出来,该位置之后的客户 7 被看作客户序列 II ,交换客户序列 I 和客户序列 II。

  N5{N_5}N5​从一条路径中选择一个客户片段,并将其移动到另一条路径中。如图 3-7所示,路径 1 中的片段 ⟨2,8⟩ 被移动到路径 2 中。

  N6{N_6}N6​交换两个路径中的客户片段。如图 3-8 所示,路径 1 中的片段 ⟨2,8⟩ 和路径 2 中的客户片段⟨1⟩进行交换。

  N7{N_7}N7​ 在选定的路径中选择一个客户片段,然后将其重新插入到该路径中的最优位置。如图 3-9 所示,路径 1 中的片段 ⟨4,5⟩ 被选择出来,重新插入到路径 1中客户 1 之后的最优位置。

  N8{N_8}N8​ 在选定的路径中交换两个客户的位置。如图 3-10 所示,路径 1 中的客户1 和客户 5 相互交换位置。

  N9{N_9}N9​ 在选定的路径中选择一个客户片段,然后将其进行倒置。如图 3-11 所示,将路径 1 中的片段 ⟨4,5,1⟩ 进行了倒置,形成了片段 ⟨1,5,4⟩

3.2基于序列的解表示的优化算子

  基于序列的解表示方法其优化算子分为交叉算子和变异算子,下面将详细介绍。

3.2.1 交叉算子

  交叉算子重新组合两个父代解(解决方案),创建一个或两个子代解(即:新解决方案)。

  在通用交叉(图1)中,将整个路径从一个路径计划复制到另一个路径计划,消除重复。
  在两点交叉(图2)中,将随机数量的连续客户从一个父节点复制到另一个父节点,去除重复。
  边缘交叉(图3)包括(1)通过连接来自两个路径计划(父代)的边来构建新的中间解,(2)合并子路径创建可行解。

3.2.2 变异算子

  变异机制用来增加解的多样性,下面介绍几种常用的变异算子。
  Swap 变异是交换一个路径计划中两个客户的位置。
  Insert变异包括将一个随机客户移动到路线计划中的新位置。
  在Inversion变异中,路径计划中的的一部分客户被反转。
  Displacement 变异是插入突变的一般化,插入突变移动的不是一个而是多个连续客户。

车辆路径问题的基本操作相关推荐

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

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

  2. MATLAB实战系列(二十四)-大规模邻域搜索(LNS)求解带时间窗的车辆路径问题(VRPTW)(附matlab源代码)

    前言 大规模邻域搜索算法(后文统一称为LNS)用MATLAB编写文中的提出的LNS求解带时间窗的车辆路径问题(后文统一称为VRPTW问题)的代码. 本文会带大家详细梳理LNS的基本流程,其实说白了LN ...

  3. vrp车辆路径问题 php,车辆路径问题

    车辆路径问题(Vehicle Routing Problem,VRP) [编辑] 什么是车辆路径问题 车辆路线问题(VRP)最早是由Dantzig和Ramser于1959年首次提出,它是指一定数量的客 ...

  4. 未能找到路径的一部分_车辆路径规划三种MIP模型

    车辆路径规划问题的三个MIP模型.从直观的模型推导出高效的模型. 我们用最最标准的Capacitated VRP为例: CVRP问题描述:给定一张完全有向图: , 其中 是客户的集合, 分别是起点和终 ...

  5. 物流管理论文实现:基于遗传算法的带时间窗和载重约束的车辆路径优化

    车辆路径问题 ​ 车辆路径问题(Vehicle Routing Problem-VRP)是为一些车辆(确定或不确定数量)确定访问一些客户的路径,每一客户被而且只被访问一次,且每条路径上的客户需求量之和 ...

  6. 白盒测试基本路径生成工具_基于基本最短路径列生成的车辆路径问题

    论文作者:Alain Chabrier 论文发表日期:2005 摘要 车辆路径问题的列生成模型通常包含一个基本的最短路径子问题.由于该问题已知算法的最坏情况复杂度过高,其基本路径约束通常被松弛.实际上 ...

  7. vrp车辆路径问题 php,车辆路径问题(VRP)

    [绘芯滑轨屏推荐]车辆路径问题(VRP)一般定义为:对一系列装货点和卸货点,组织适当的行车线路,使车辆有序地通过它们,在满足一定的约束条件(如货物需求量.发送量.交发货时间.车辆容量限制.行驶里程限制 ...

  8. 菜鸟车辆路径规划创造26项世界纪录 实际可降低10.3%配送成本

    9日,菜鸟方面透露,菜鸟已经在全球权威车辆路径规划(VRP)问题评测系统中创造了26项世界记录.目前,菜鸟是国内首个问鼎该评测系统的研究机构.这意味着在26个物流场景中,菜鸟的算法可以使用最少的车辆, ...

  9. 世界冠军之路:菜鸟车辆路径规划求解引擎研发历程

    阿里妹导读:车辆路径规划问题(Vehicle Routing Problem, VRP)是物流领域最经典的优化问题之一,具有极大的学术研究意义和实际应用价值.菜鸟网络高级算法专家胡浩源带领仓配智能化算 ...

  10. [置顶] 基于遗传算法求解车辆路径问题

    今天整理了一下以前写过的一个遗传算法求解车辆路径问题的程序(C#写的),发上来和大家分享一下,有误的地方还请各位指点. 1.车辆路径问题: 车辆路径问题可以描述为:在一个存在供求关系的系统中,有若干台 ...

最新文章

  1. [LeetCode] Count Primes
  2. 基于深度学习的恶意样本行为检测(含源码) ----采用CNN深度学习算法对Cuckoo沙箱的动态行为日志进行检测和分类...
  3. 每天一个linux命令(41):ps命令
  4. 代码解释n |= n >>> 16
  5. 【转】NI语法 JNI参考 JNI函数大全
  6. flask-session 在redis中存储session
  7. OMP算法实现人脸识别_matlab完整代码
  8. 【经典回放】多种语言系列数据结构线性表之二:链表
  9. android rn 和webview,RN Webview与Web的通信与调试
  10. (回文串全排列个数) xiaoxin juju needs help
  11. Java快速开发框架LML简介
  12. ## CSP 201312-2 ISBN号码(C语言)(100分)
  13. 未来五年,iOS 开发如何前行?
  14. day23 02 组合(继续人狗大战游戏)
  15. What are your list of must know programming proverbs ?
  16. 中国厨房垃圾处理器(厨余粉碎机)行业深度调研与投资前景分析报告2022-2028年版
  17. MPEG压缩中的 I、B、P帧
  18. linux 光盘刻录命令,在Linux操作系统中使用命令进行光盘刻录
  19. 3Dunet 降假阳性模型预处理
  20. pythonGUI(二)基本元素之二

热门文章

  1. Linux安装deb安装包命令
  2. 【Unity3D插件】FancyScrollView插件分享《通用UI滑动列表》
  3. UCOS操作系统——时间片轮转调度(五)
  4. 【音视频】实操YUV与RGB互转(planar模式 YUV420、YUV422、YUV444与RGB888)
  5. oss文件普通下载-断点下载
  6. MINIST数据集读取
  7. 机器学习大部分是用Python去实现,是否可以用Matlab去做机器学习呢?
  8. 执行maven打包命令mvn package前maven会默认执行test命令的解决方法
  9. python 将excel文件转换为txt文件_python实现Excel文件转换为TXT文件
  10. 【论文复现】ReLU、Leaky ReLU、PReLU、RReLU实验对比(2015)