2. 昆明理工大学 机电工程学院,云南 昆明 650500
2. School of Mechanical and Electrical Engineering, Kunming University of Science and Technology, Kunming 650500, China
车辆路径问题(Vehicle Routing Problem,VRP)由Dantzig和Ramser于1959年首次提出[1],VRP作为经典的组合优化问题,得到了广大学者的研究。带容量的车辆路径问题(Capacitated Vehicle Routing Problem, CVRP)是VRP的一类,广泛存在交通运输、物流配送等方面,同时,当今社会推行绿色低碳发展,绿色车辆路径问题受到了重视。在上述背景下,研究绿色带容量的车辆路径问题(Green Capacitated Vehicle Routing Problem, GCVRP)具有重要的现实意义。由于VRP为NP-hard问题,而VRP可归约为GCVRP,故GCVRP也属于NP-hard问题,对其展开研究具有较大的理论价值。
VRP的求解方法可以分为两类,一类为智能优化算法,如遗传算法、蚁群算法和禁忌搜索算法等[2-4],该类算法通过建立问题的排序模型进行求解,一般不能保证得到全局最优解以及无法判断所求解的优劣程度;另一类为精确算法,如分支定界、列生成和拉格朗日松弛算法等[5-10],该类算法通过建立问题严格的数学模型,能在合理时间内求得小规模问题最优解,针对大规模问题,该类算法能在合理时间内求得问题的精确下界,由于该类算法所求解为问题最优解或逼近最优解的下界,能较大程度保证解的求解质量,同时求解时间也基本合理。
近年来,相关学者对VRP及其拓展问题的精确算法或基于精确算法的混合算法进行了研究。Bouzid等[11]针对CVRP,以最小化路径成本为优化目标,建立了整数规划模型,并提出一种拉格朗日分裂(Lagrangian Split, LS)与变邻域搜索(Variable Neighbourhood Search, VNS)结合的混合算法进行求解。Singh等[5]针对具有模糊需求的CVRP,建立了该问题的数学模型,并以最小化成本为优化目标,提出一种分支定界算法(Branch and Bound, B&B)进行求解。Lysgaard等[6]针对累积容量车辆路径问题(Cumulative Capacitated Vehicle Routing Problem, CCVRP),建立了问题的集划分模型,以最小化路径总成本为优化目标,采用(Branch-and-Cut-and-Price, BCP)进行求解。Majid等[7]针对随机需求的车辆路径问题(Vehicle Routing Problem with Stochastic Demands, VRPSD),建立了该问题的数学模型,以最小化总费用为优化目标,采用整数L形(L-shaped)算法在分支切割框架下求解VRPSD,实验结果验证了所提算法的有效性。Christiansen等[8]针对VRPSD,以最小化成本为求解目标,提出了一种分支定价算法(Branch-and-price, B&P)进行求解。
当今社会持续推进节能减排,坚持绿色发展,考虑燃油消耗和碳排放等因素的绿色车辆路径问题(Green Vehicle Routing Problem, GVRP)受到了重视。Andelmin等[9]针对求解目标为最小化行驶总距离的GVRP,并将该问题建模为集合划分问题,提出了一种结合K-路(K-path)切割的列生成(Column Generation, CG)算法进行求解。Dabia等[10]研究污染路径问题(Pollution-routing Problem, PRP),以最小化运送成本为求解目标,运用CG算法对主问题进行了求解,并提出一种定制的标记算法解决了定价问题,实验结果验证了所提算法的有效性。Çağrı等[12]提出了GCVRP的混合整数规划模型(Mixed Integer Programming, MIP),并以最小化行驶距离为求解目标,同时提出了一种基于模拟退火(Simulated Annealing, SA)的精确解方法进行求解,作者运用改进B&P算法改进下界,并引用了一种基于SA的启发式算法来获得上界,实验结果验证了所提算法的有效性。Qiu等[13]研究碳排放限额交易下的污染生产路径问题(Pollution Production-routing Problem, PPRP),建立了该问题的数学模型并以最小化运营成本为求解目标,提出一种分支定价启发式算法进行求解,仿真实验证明了该模型具有降低二氧化碳排放水平和运营成本的潜力。由文献调研可知,目前求解GCVRP的精确算法或与精确算法相结合的算法相对较少。
拉格朗日松弛算法(Lagrange Relaxation, LR)是一种求解复杂组合优化问题的有效方法,LR主要思想是将问题的难约束引入目标函数得到松弛问题,再通过不断更新迭代乘子,逐步求得松弛问题的解。运用传统LR求解GCVRP,往往只能求得问题的下界,该下界一般为不可行解。因此,本文综合LR和启发式算法优势,采用两者相结合的算法求解GCVRP,首先运用LR求得问题下界,再根据问题性质,设计相应启发式算法对下界进行修复及优化,得到问题的上界,通过上界和下界的间隙(Gap),可以衡量算法性能,是一种求解GCVRP的有效方法。
综上,本文针对实际生活中广泛存在的GCVRP,建立以最小化运输成本为优化目标的混合整数规划模型,并提出一种改进拉格朗日算法进行求解,具体为运用拉格朗日松弛算法得到GCVRP的松弛问题,进而得到原问题的对偶模型,并采用一种次梯度法求解该对偶模型,得到原问题的一个下界;然后,采用修复算法及邻域搜索算法对下界进行修复和优化,得到原问题的一个上界。最后,通过上下界的间隙大小以及对比Gurobi求解器所求解来衡量所提算法的有效性。
1 GCVRP问题描述与数学模型 1.1 GCVRP问题描述GCVRP是在CVRP的基础上进一步考虑了绿色因素,该问题建立在已知仓库和客户点坐标(坐标以km为单位)、客户需求及车辆载重条件下,合理调度仓库中的车辆为客户送货,使运输费用最小。图1为问题示意图。
![]() |
图 1 GCVRP问题示例 Figure 1 GCVRP problem example |
问题相关假设如下:
(1) 仓库内所有车辆均参与配送;
(2) 每辆车仅执行一次配送任务;
(3) 车辆从仓库出发,完成服务后返回原仓库;
(4) 每个客户只能被一辆车服务一次;
(5) 每辆车配送的货物总量不能超过其载重;
(6) 车辆在配送过程中保持匀速行驶,忽略道路等因素对车辆的影响。
GCVRP相关符号定义见表1。
![]() |
表 1 符号及定义 Table 1 Symbols and definitions |
目标函数
$ \begin{split} {\rm{min}}{{Z}}=&\sum\nolimits_{m = 1}^M {\sum\nolimits_{i = 0}^N {\sum\nolimits_{j = 0}^N {{c_1}{x_{mij}}{d_{ij}}} } } + \sum\nolimits_{m = 1}^M {\sum\nolimits_{j = 0}^N {{c_2}{x_{m0j}}} } + \hfill \\ & \sum\nolimits_{m = 1}^M {\sum\nolimits_{i = 0}^N {\sum\nolimits_{j = 0}^N {{c_m}{E_{ij}}} } } {x_{mij}} \hfill \\[-15pt] \end{split} $ | (1) |
约束条件:
$ \sum\nolimits_{m = 1}^M {\sum\nolimits_{j = 1}^N {{x_{m0j}}} } = \sum\nolimits_{m = 1}^M {\sum\nolimits_{j = 1}^N {{x_{mj0}}} } $ | (2) |
$ \sum\nolimits_{j = 1}^N {{x_{m0j}}} = \sum\nolimits_{j = 1}^N {{x_{mj0}}} = 1,\forall m \in C $ | (3) |
$ \sum\nolimits_{m = 1}^M {\sum\nolimits_{i = 0}^N {{x_{mij}}} } = 1,i \ne j,\forall j \in V\backslash \{ 0\} $ | (4) |
$ \sum\nolimits_{m = 1}^M {\sum\nolimits_{j = 0}^N {{x_{mij}}} } = 1,i \ne j,\forall i \in V\backslash \{ 0\} $ | (5) |
$ \sum\nolimits_{m = 1}^M {\sum\nolimits_{i = 0}^N {\sum\nolimits_{j = 0}^N {{x_{mij}}} } } = 0,i = j $ | (6) |
$ \sum\nolimits_{i = 0}^N {{x_{mij}}} = \sum\nolimits_{i = 0}^N {{x_{mji}}} ,i \ne j,\forall m \in C,\forall j \in V\backslash \{ 0\} $ | (7) |
$ \sum\nolimits_{i = 0}^N {\sum\nolimits_{j = 0}^N {{x_{mij}} \cdot {q_i}} } \leqslant Q,i \ne j,\forall m \in C $ | (8) |
$ \begin{gathered} {u_i} - {u_j} + 1 - N(1 - {x_{mij}}) \leqslant 0, \hfill \\ i \ne j,\forall m \in C,\forall i \in V\backslash \{ 0\} ,\forall j \in V\backslash \{ 0\} \hfill \\ \end{gathered} $ | (9) |
$ \sum\nolimits_{i = 0}^N {\sum\nolimits_{j = 0}^N {{x_{mij}}} } {q_i} = \sum\nolimits_{j = 1}^N {{w_{m0j}}{x_{m0j}}} ,\forall m \in C $ | (10) |
$ \sum\nolimits_{j = 0}^N {{w_{mj0}}} = 0,\forall m \in C $ | (11) |
$ \begin{gathered} \sum\nolimits_{i = 0}^N {{w_{mij}}{x_{mij}}} - {q_j}\sum\nolimits_{i = 0}^N {{x_{mij}}} = \sum\nolimits_{i = 0}^N {{w_{mji}}{x_{mji}}} , \hfill \\ i \ne j,\forall j \in V\backslash \left\{ 0 \right\},\forall m \in C \hfill \\ \end{gathered} $ | (12) |
$ {w_{mij}} \geqslant 0,\forall i \in V,\forall j \in V,\forall m \in C $ | (13) |
$ \begin{array}{l} {x}_{mij}=\left\{ {\begin{array}{*{20}{l}}{1,}& {若仓库的第m辆车从节点i移动到节点j} \\ {0,}& {其他}\end{array}} \right.\\ i\ne j,\forall i\in V,\forall j\in V,\forall m\in C\end{array} $ | (14) |
其中:式(1)为目标函数;式(2)要求从仓库出入车辆数目相等;式(3)要求仓库内所有车均参与配送,且配送完返回原仓库;式(4)~(6)要求每个客户只能被一辆车服务一次;式(7)为流平衡约束;式(8)要求仓库的每辆车的载货量不能超过其额定载重;式(9)为MTZ子环消除约束;式(10)表示车辆从仓库出发时的载货量等于所服务客户的总需求量;式(11)表示车辆完成服务任务,返回仓库的载货量为0;式(12)表示某辆车服务完当前客户点后的货物量等于从该客户点离开的货物量;式(13)和(14)为决策变量。
1.3 碳排放量计算方法车辆行驶过程中的碳排放与燃油的消耗直接相关,影响燃油消耗的因素较多,计算也相对复杂。本文在计算碳排放量上,采用文献[14-16]中的计算方法,相关参数定义见表2。计算公式为
$ {E_{ij}} = e\tau (\zeta {N_0}{V_s} + \gamma W\alpha v + \gamma {w_{mij}}\alpha v + \gamma \beta {v^3}){d_{ij}}/v $ | (15) |
式中:
![]() |
表 2 参数定义与取值 Table 2 Parameter definition and value |
本节针对上节所提问题模型,提出一种结合拉格朗日松弛算法与启发式算法的改进拉格朗日松弛算法进行求解。GCVRP求解流程如图2所示。
![]() |
图 2 GCVRP求解流程图 Figure 2 GCVRP solution flow chart |
由于上节所提GCVRP具有NP难属性,直接求解其最优解非常困难,但求取该问题的下界较为简单。LR是一种求解问题下界的有效方法,通过松弛问题中的难约束,可以大大减小问题的求解难度。通过对GCVRP进行分析,车辆的载重约束(8)影响了车辆的行驶距离,会影响目标值的求取,松弛这条约束会使原问题容易求解。本节将约束条件(8)松弛到目标函数中,得到拉格朗日松弛模型为
$ \begin{split} L(\lambda )=&\sum\nolimits_{m = 1}^M {\sum\nolimits_{i = 0}^N {\sum\nolimits_{j = 0}^N {{c_1}{x_{mij}}{d_{ij}}} } } + \sum\nolimits_{m = 1}^M {\sum\nolimits_{j = 0}^N {{c_2}{x_{m0j}}} } + \hfill \\ & \sum\nolimits_{m = 1}^M {\sum\nolimits_{i = 0}^N {\sum\nolimits_{j = 0}^N {{c_m}{E_{ij}}} } } {x_{mij}} + \\ & \sum\nolimits_{m = 1}^M {{\lambda _m}\left(\sum\nolimits_{i = 0}^N {\sum\nolimits_{j = 0}^N {{x_{mij}} {q_i}} } - Q\right)} \\[-15pt] \end{split} $ | (16) |
$ {\rm{s}}.{\rm{t}}.(2) \sim (7)、(9) \sim (14)以及 {\lambda _m} \geqslant 0,\forall m \in C $ |
式中:
$ \mathop {\max }\limits_{\lambda \in [0, + \infty )} L(\lambda ) $ | (17) |
$ {\rm{s}}.{\rm{t}}.(2) \sim (7)、(9) \sim (14)以及 {\lambda _m} \geqslant 0,\forall m \in C $ |
通过求解LD问题可以得到原问题的一个下界。
2.2 构造可行解求解对偶问题所得解一般是不可行解,因为可能违反车辆的载重约束条件,因此需要先对不可行解进行修复,得到原问题的可行解,再运用局部搜索操作对可行解进行优化,得到原问题高质量解。本小节采用修复算法和邻域搜索算法对不可行解进行修复及优化。
2.2.1 修复算法1) 解的转化。
上述不可行解为二进制编码解,需要转化成排序解。转化方法为:设不可行解为
2) 修复不可行解。
针对上述获得的不可行解,运用以下算法进行修复,设车辆数为
(1) 将二进制编码解转换成排序解。
(2) 依次判断车辆
(3) 以最小化行驶距离为目标,并以车辆载重为约束条件,将剩余客户点插入所有车辆(
(4) 选出
(5) 若剩余客户点分配完,输出修复后的可行解,执行步骤(7);否则,执行步骤(6)。
(6) 将剩余客户点插入车辆
(7) 程序结束。
2.2.2 邻域搜索算法本小节针对上述获得的可行解,设计了车辆间和车辆内两类共4种邻域搜索操作,以进一步提高可行解的质量。算法步骤如下:
(1) 设可行解为
(2) 在
(3) 在
(4)
(5) 如果
(6) 如果
(7) 如果步骤(5)或(6)均未获得更好解,则执行步骤(8);反之,
(8) 令
(9) 如果
针对上述所提的拉格朗日对偶问题,本文采用次梯度算法进行求解。其求解基本思想是:根据已知条件,求解对偶问题,获得问题的下界和决策变量值,进而计算更新次梯度以及拉格朗日乘子,通过不断更新迭代求解对偶问题,直到找到满足条件的对偶值。用次梯度算法求解对偶问题时,拉格朗日乘子
$ \lambda _m^{n + 1} = {\rm{max}}\{ 0,\lambda _m^n + {\rm{Ste}}{{\rm{p}}^n} \cdot {g_m}({x^n})\} $ | (18) |
式中:
$ {g_m}({x^n}) = \sum\nolimits_{i = 0}^N {\sum\nolimits_{j = 0}^N {{x_{mij}}} } {q_i} - Q,\forall m \in C $ | (19) |
步长更新公式为
$ {\rm{Ste}}{{\rm{p}}^n} = \frac{{({\rm{UB}} - {\rm{L}}{{\rm{B}}^n})}}{{\displaystyle\sum\nolimits_{m = 1}^M {{{({g_m}({x^n}))}^2}} }}\omega $ | (20) |
式中:
整个求解算法步骤如下:
(1) 初始化拉格朗日乘子
(2) 求解对偶问题(17),获得决策变量
(3) 运用2.2.1中的修复算法对下界进行修复,若能修复得可行解
(4) 运用2.2.2中的二阶段算法对可行解
(5) 运用公式(18)、(19)和(20)更新次梯度、步长和拉格朗日乘子。
(6) 判断是否满足终止条件,若满足,输出最佳上界
本节将改进拉格朗日松弛算法所求解与基于Gurobi求解器所求MIP的解进行对比,通过两者所求解与改进拉格朗日松弛算法所求下界的间隙(
![]() |
表 3 不同规模问题算法对比1) Table 3 Comparison of algorithms for different scale problems |
本文提出一种改进拉格朗日松弛算法求解GCVRP,与商业求解器Gurobi所求解进行了对比,求解结果见表3,从表可以看出:针对编号1~7的小规模算例,Gurobi求解器在1800 s内能求得4个算例的最优解。小规模算例所求解平均
针对编号为8~19的中大规模算例,随着问题规模的变大,解空间更加复杂,Gurobi求解器弊端凸显,12个算例的平均
综合来看,针对19个不同规模的算例,改进拉格朗日松弛算法能较好地求解GCVRP,在合理时间内,所有算例的平均
本文在VRP的基础上,进一步考虑车辆载重和绿色因素,建立了GCVRP的混合整数规划模型,并以总费用最小为求解目标,提出一种改进拉格朗日松弛算法进行求解。首先,采用次梯度法求解对偶问题,得到原问题的下界;其次利用修复算法和邻域操作对下界进行修复及优化,得到原问题高质量下界,实现上界下界并行求解。实验结果表明,本文算法的综合求解性能优于Gurobi,是一种求解GCVRP的有效方法。后续将进一步考虑多车场多车型因素,并设计有效求解算法。
[1] |
DANTZIG G B, RAMSER J H. The truck dispatching problem[J].
Management Science, 1959, 6(1): 80-91.
DOI: 10.1287/mnsc.6.1.80. |
[2] |
BENSLIMANE M T, BENADADA Y. Ant colony algorithm for the multi-depot vehicle routing problem in large quantities by a heterogeneous fleet of vehicles[J].
Information Systems & Operational Research, 2013, 51(1): 31-40.
|
[3] |
SINGH V, GANAPATHY L, PUNDIR A K. An improved genetic algorithm for solving multi depot vehicle routing problems[J].
International Journal of Information Systems and Supply Chain Management, 2019, 12(4): 1-26.
DOI: 10.4018/IJISSCM.2019100101. |
[4] |
朱晓锋, 蔡延光. 带时间窗的模糊需求多类型车辆路径问题禁忌搜索算法[J].
广东工业大学学报, 2008, 25(3): 55-60.
ZHU X F, CAI Y G. Research on multi-vehicle scheduling problems with fuzzy demand and time windows[J]. Journal of Guangdong University of Technology, 2008, 25(3): 55-60. DOI: 10.3969/j.issn.1007-7162.2008.03.015. |
[5] |
SINGH V P, K SHARMA, CHAKRABORTY D. A branch and bound based solution method for solving vehicle routing problem with fuzzy stochastic demands[J].
Sadhana, 2021, 46(4): 1-17.
|
[6] |
LYSGAARD J, WØHLK S. A branch-and-cut-and-price algorithm for the mixed capacitated general routing problem[J].
European Journal of Operational Research, 2014, 236(3): 800-810.
DOI: 10.1016/j.ejor.2013.08.032. |
[7] |
MAJID S K, MICHEL G, OLA J, et al. An exact algorithm to solve the vehicle routing problem with stochastic demands under an optimal restocking policy[J].
European Journal of Operational Research, 2018, 273(1): 175-189.
|
[8] |
CHRISTIANSEN C H, LYSGAARD J. A branch-and-price algorithm for the capacitated vehicle routing problem with stochastic demands[J].
Operations Research Letters, 2009, 35(6): 773-781.
|
[9] |
ANDELMIN J, BARTOLINI E. An exact algorithm for the green vehicle routing problem[J].
Transportation Science, 2017, 51(4): 1288-1303.
DOI: 10.1287/trsc.2016.0734. |
[10] |
DABIA S, DEMIR E, WOENSEL T V. An exact approach for a variant of the pollution-routing problem[J].
Transportation Science, 2017, 51(2): 607-628.
DOI: 10.1287/trsc.2015.0651. |
[11] |
BOUZID M C, HADDADENE H A, SALHI S. An integration of Lagrangian split and VNS: the case of the capacitated vehicle routing problem[J]. Computers & Operations Research, 2017, 78: 513-525.
|
[12] |
ÇAĞRI, KOÇ, KARAOGLAN I. The green vehicle routing problem: a heuristic based exact solution approach[J]. Applied Soft Computing, 2016, 39: 154-164.
|
[13] |
QIU Y, QIAO J, PARDALOS P M. A branch-and-price algorithm for production routing problems with carbon cap-and-trade[J]. Omega, 2017, 68: 49-61.
|
[14] |
DEMIR E, BEKTAS T, LAPORTE G. An adaptive large neighborhood search heuristic for the pollution-routing problem[J].
European Journal of Operational Research, 2012, 232(2): 346-359.
|
[15] |
FRANCESCHETTI A, HONHON D, WOENSEL T V, et al. The time-dependent pollution-routing problem[J].
Transportation Research Part B, 2013, 56(56): 265-293.
|
[16] |
葛显龙, 苗国庆, 谭柏川. 开放式污染路径问题优化建模与算法研究[J]. 工业工程与管理, 2015, 20(4): 46-53.
GE X L, MIAO G Q, TAN B C, Research on optimization modeling and algorithm for open pollution routing problem[J]. Industrial Engineering and Management, 2015, 20(4): 46-53. |