vrp 节约算法 c++_优化 | 浅谈旅行商问题(TSP)的启发式算法

514ec9817fb393f2cbe22651dd88a592.png

『运筹OR帷幄』原创

作者:高源

b161569402848afb7b999f500928440f.png

编者按:作为经典NP-hard问题,TSP和VRP问题一直是业界和学界的关注重点。本文以业界为主要视角,通过VRP和TSP的联系做切入点来引入TSP问题,分类讨论了启发式算法在对称TSP与非对称TSP中的运用。
一、TSP简介

TSP全称为Travelling Salesman Problem(旅行商问题),通俗而言,它是指对于给定的一系列城市和每对城市之间的距离,找到访问每一座城市仅一次并回到起始城市的最短回路。

TSP问题在运筹学发展史上有重要的意义,1952年,Danzig, Fulkerson和Johnson成功的解决了美国本土分数不同州的48个城市和哥伦比亚特区共49个城市的TSP实例,使更多的人初次了解了组合优化研究的意义,也感受到了离散问题求解的准度。

因为TSP是NP-C问题,因此其没有多项式时间内可以求最优解的算法。(如果对于NP-C的定义不了解,可以简单理解为对于某些实例,随着规模的增加,求解最优解所需的时间是爆炸式的指数增长)。因此研究TSP的启发式算法就显得很重要了。

二、由难入简 - VRP与TSP的联系

在深入TSP前首先简单介绍车辆路径问题(VRP)。事实上,在实际生活中,大多数我们所遇见的问题大都是VRP问题。1959年,《The truck dispatching problem》的作者Dantzig和Ramser在书中写到,TSP可被看成是VRP的某一类子问题。因此,理解TSP将是研究更深层路径优化算法的基石。

VRP的数学描述即为对于图G = (V, A, E) 找到成本最小的闭迹(无重复边的闭合回路)组合遍历已知的点集合(V)和弧(单向路)(A)或边(双向路)(E)集合。看似抽象,但在实际生活中,这样的问题其实无处不在。

比如在供应链领域,最经典的VRP即卖家对客户的补货策略:车队从配送中心(0)出发,遍历所有客户(U),满足客户货物需求后回到配送中心{0},在一定约束下,达到路程最短,成本最低等目的。此时A⋃E=∅,闭迹仅需遍历已知点集合(V=U⋃{0})。

而进一步当没有容量和时间等约束且仅有一辆货车进行一次性补货时,该问题就是TSP问题,即找到成本最小的一条闭迹遍历已知的点集合(V), 且在最优解中所有点仅会出现一次。

三、TSP模型

那么首先还是先抛出TSP的数学模型,对于有向图

155538b7cd0797605f81f2681ea22e26.png

,其中

7947e23336d1ab207f7a502202cc157f.png

为弧ij的成本, TSP可以被分解为以下四个约束和其目标函数。首先最后一个约束指变量

d1dc61be781317bff887bfc37269279f.png

为二进制变量,其等于1当仅当弧ij属于解回路。

约束(1)和(2)用于定义闭合回路,即任意顶点j/ i,解回路中必有且仅有一条弧以其作为起点的同时有且仅有一条弧以其作为终点。

但是仅仅有约束(1)和(2)是不足以定义TSP,因为虽然保证了解为闭合回路却没有保证解仅含一条闭合回路,因此我们需要约束(3)以防止小圈的出现。

那么约束(3)可以理解为对于任意点集合S(非V且含2个顶点及以上),必定存在至少有一个S中的顶点与S外的顶点相连接。综上,我们可以得到以下数学模型。

7d67e8c5388b66152d4db9dd219a29d5.png

其中约束(3)尽管可被简化但仍使得该问题成为了NP问题,因此基于上述讨论,本文将简单介绍可用于解决TSP的启发式算法。

四、ATSP的启发式算法(基于指派问题)

TSP问题依据边的成本正反向是否相等

e263ed7c9dfd528e661beb15d47d27e0.png

可以分为对称 (STSP) 或非对称 (ATSP)。而STSP与ATSP的性质有许多不一样,因此以下将分开进行讨论。

注释:

以下讨论条件均为满足三角不等式下的度量TSP,即

3af69cc0478ed91277586223db26b29b.png

该文中对于ATSP的启发式算法的讨论相对简单,因为可以发现当我们如果忽略约束 (3) ,该问题便成了简单的指派问题 (Assignment Problem (AP))。

而因为AP具有最优解整数性质(全幺模矩阵),因此约束 (4) 可被改写为

90433717c62cdfe151cdaca5cd8ed0a7.png

综上,上述模型改写成了可快速求解的线性规划问题。

那么,当得到AP问题的最优解

8cc02743d31d2c4d99af43ccfe9a7800.png

(p个遍历所有点的有向闭迹

eae11578e3c180eea4e119ae1bce00b3.png

)后,如果发现此时p=1,即仅有一个闭合回路,那么

8cc02743d31d2c4d99af43ccfe9a7800.png

则为ATSP的最优解,如若不然则对解进行优化改写。

注释:

对于ATSP而言,如果成本矩阵非对称性非常强,那么当解

4fbdcc9e0eb9cf387b618040e3fc4000.png

满足

6ce1816afafd795343f75762983d74e9.png

时,我们可以认为当前解为相对最优;

而对于STSP,该值将在30%附近或更高,因为STSP如用AP作为下界,那么解中将会有很多成对出现的子迹。

基于初始解

8cc02743d31d2c4d99af43ccfe9a7800.png

进行启发式算法的流程如下:

  1. 记p个有向子闭迹为, 若p=1,停止,该为ATSP的最优解, 否则进入步骤2;
  2. 找到两个拥有最多覆盖点的子迹;
  3. 合并 ,使得合并增加的成本最小,另p = p - 1, 如果p = 1,此时解为相对最优解,否则返回步骤2;

我们可以通过以下具体例子[2]进一步理解,假设有6个点,每个点之间的距离成本矩阵如下

a06e964070f48e40d4c10c536f91bd81.png

通过AP模型,可以得到

8cc02743d31d2c4d99af43ccfe9a7800.png

e5639a3c8742d46f507dc81a7b38dab5.png

此时p=2,进行启发式算法合并两个子迹,得到

b63d0bcf5a1bc5245a4adf26fb0de85c.png

在上述简单例子中,由于AP初始解仅有2个闭合回路,因此我们仅需要通过一次循环就可以找到启发式算法的最优解, 更一般而言,当初始解回路为M时,我们需要重复M-1次以得到最优解。

在供应链领域,ATSP问题通常是针对城内规划,路径多样且不对称,而对于STSP,多为城际规划,道路单一且大致对称。因此接下来我们将着重描述适用于更大型系统的STSP的启发式算法。

五、STSP的启发式算法一(Nearest Neighbor)

因为对称TSP性质的特殊性,模型将建立在无向图上,因此我们可以改写其数学模型为

1d0c78eb2314fce54c594771299eb62f.png

约束(6)即等效于ATSP的约束(1)和(2),而约束(7)即为防止子迹的出现。

现在我们先介绍简单的最近邻点算法(nearest neighbor heuristic)的具体步骤:

  1. 任选点作为起点,令
  2. 找到下一邻点 使得 , 将k加入C中
  3. 当|C|=|V|则算法停止,否则记h=k重复步骤2

下面用一个最近邻点算法的具体实例来进一步阐释:

83a0b3aa70e0b25adf2548e8e89b38df.png
  1. 选择最左端点为起点(1)
  2. (1)其可与最右端点(9),第(2)和(3)端点相连,选择有最小成本1的(3)与(1)相连。

重复上述过程后,可知最近邻点发的最优解为红色路径,成本为10,而通过肉眼观察容易发现最优解即为直接依次从最左端至最右端,其最优长度为9+5ϵ。

基于上述理解,结合严格的数学证明可知,最近邻点算法的所得长度与最优长度相比可能随点集数量的增加而趋于无穷,但因为其在TSPLIB(a library of sample instances for the TSP (and related problems) from various sources and of various types)实例中所得到的结果对比平均值,即(Nearest Neighbor的最优解/ 目前已知最优解),约在1.26附近且算法简单容易实现,因此也是广为实用的一个算法。

六、STSP的启发式算法二(Christofides heuristic)

该启发式算法是迄今为止最坏情况界最小(3/2)的算法,相对复杂且涉及到的知识面较广,在这里没有办法一一说明,如果感兴趣可以对于每个定语结论进行更深入的研究。

注释:

最坏情况界:对某极小化问题

6c030945407b1cc523f5fa6d4694bc30.png

是任意实例,记

b9d0e17e0f926df824ef9b557305342c.png

为算法A对于实例

2bbecf6ba1b48dff5a9463a85dbbe22c.png

所得目标函数值,

895a13ed35992314fccde8c11aa401e4.png

为最优目标函数值,则A的最坏情况界r定义为对于所有实例

2bbecf6ba1b48dff5a9463a85dbbe22c.png
db399102478bcf2a37d32f6c02cc32ee.png

在介绍该启发式算法之前,抛出一个结论做铺垫,因为STSP建立在无向图G=(V,E)上,因此哈密尔顿圈即为最优解。

注释:

哈密尔顿通路:无向图G=(V,E),若G中一条通路通过且仅通过每一个顶点一次,称这条通路为哈密尔顿通路。

哈密尔顿圈:若G中一个圈通过且仅通过每一个顶点一次,称这个圈为哈密尔顿圈。

哈密尔顿图:若一个图存在哈密尔顿圈,就称为哈密尔顿图

基于上述结论,我们可以通过一系列变化,找到变化图后的哈密尔顿圈作为其相对最优解。那么接下来便是启发式算法(Christofides heuristic)的步骤介绍:

  1. 利用最小生成树(MST)生成初始解,任选点r作为起点,在多项式时间内找到最小生成树。
57aefcf4255f610d127dbfdfe7defa9e.png

注释:

最小生成树(MST):假设无向连通图G(V, E),且E中的每条边e有权值(可以表示距离

、价值等),找出一颗树,连接G中所有的边,且连接这棵树的所有边的权值之和最

小。

基于STSP问题, MST其数学模型为(利用r为起点)

eb84776906fd014314e47e407911543b.png

同时当我们得到该下界后,我们仍可以对其值进行提升

a. 通过选择不同的起点生成树,从而找寻值最大的;

b. 或者利用拉格朗日对约束(9)进行松弛后求解

  1. 对奇度顶点(上图中的1,2,3,5,6,7)(结论:必为偶数个)集合建立最小完美匹配模型,找到最小成本匹配,如下图中的红色虚线
4ad8a34b1ab430e8a4edd60c4bd78d67.png

注释:

点的度数:与点相连的边的个数。

匹配:其中任意两条边都没有公共顶点的边集合

完美匹配:所有点都是匹配点的匹配。

最小完美匹配:拥有最小成本的完美匹配

  1. 当完成上述步骤后,即得到一欧拉图,基于欧拉图,找到欧拉回路即0-5-1-5-3-2-3-4-6-7-4.

注释:

欧拉图:指通过图(无向图或有向图)中所有边且每边仅通过一次通路,相应的回路称为欧拉回路

  1. 从欧拉回路中找到哈密尔顿圈,即0-5-1-3-2-4-6-7-0(仅保留欧拉回路中第一次出现点)
e3f4a82902793293b50e9223f273ead8.png

七、最后的一点碎碎念

TSP问题是很多问题的基石,比如VRP问题,尽管对其的研究已经十分丰富,但是模型本身难度非常大,且实际问题中,还存在很多不确定因素,比如路径的成本如何估量,路径的时间如何准确预测等都需要与其他知识理论例如机器学习等知识相结合[3]。

参考文献:

[1] ] D.S. Johnson, L.A. McGeoch, F. Glover, C. Rego, 8th DIMACS Implementation Challenge: The Traveling Salesman Problem, 2000.

[2] G. Ghiani, G. Laporte, R. Musmanno, Introduction to Logistics System Management

[3] 谈之奕, 林凌, 组合优化与博弈论

[4] Lecture Notes from Dr. Savelsbergh - Transportation 2018 in Georgia Tech

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值