论文来源:(2021)Learning-Based Branch-and-Price Algorithms for theVehicle Routing Problem with Time Windows and T wo-Dimensional Loading Constraints
作者:Xiangyi Zhang 等人
一、摘要
- 解决了具有二维加载约束的有能力的车辆路径问题。与每个客户相关联的是一组矩形物品、物品的总重量和一个时间窗口。
- 为该问题设计精确的算法非常具有挑战性,因为该问题是两个 NP-hard 问题的组合。
- 提出了一个精确的分支定价算法和一个近似的对应算法来解决这个问题。
- 我们引入了一个精确的域控制规则和一个近似的域控制规则。
- 为了应对加载约束带来的困难,提出了一种由监督学习模型推动的新列生成机制。
- 大量实验证明了在 CPU 时间和可行性检查器调用方面集成学习模型的优越性。
- 此外,分支定价算法能够显着改进文献中现有实例的解决方案,并解决具有多达 50 个客户和 103 个项目的实例。
二、本文贡献总结
- 提出了一种新的 2L-VRPTW 列生成机制。在传统的列生成框架中,嵌入了监督学习模型和学习模型校正过程,保证了整个算法的有效性。由此产生的列生成算法可以有效减轻由加载约束引起的计算负担。
- 考虑到定价问题中的二维加载约束而不是放松约束,提出了精确支配规则。出于时间预算的考虑,还提出了一个很好的近似优势规则。
- 建立了一个新的监督学习任务。构建具有手工制作特征作为输入的前馈神经网络来解决该任务。
- 开发了一种精确的 B&P 算法及其近似变体来解决文献中的实例。
- 广泛的计算实验报告了关于 B&P 算法的性能以及学习模型的影响。
注意:因为我只关注此文章是如何使用二分类对列生成进行加速的,所以以下内容是从原文筛选而来,只关注二分类对列生成进行加速部分,并不是完整内容。
三、组合优化中的机器学习模型
应用机器学习 (ML) 来解决 CO 问题并不是一个新鲜的想法。它可以追溯到 80 年代 (Smith 1999)。
Bengio 等人 (2021) 最近的一篇评论对 ML 模型在运筹学 (OR) 算法中扮演的角色进行了分类:(1) 端到端; (2) 学习有价值的信息; (3)学习子程序。 “端到端”算法应用 ML 模型通过将问题域映射到解决方案域来直接解决 CO 问题(Khalil 等人 2017 年、Kool 等人 2018 年、Nair 等人 2018 年)。 “学习有价值的信息”在于使用 ML 模型提取有用的数据来建模或解决 CO 问题。它以“先预测,再优化”的方式运行,其中有价值的信息由 ML 模型预测,然后 OR 算法与预测信息一起使用(Kruber et al 2017,Bonami et al2018)。最后一类使用 ML 模型来学习子程序。在解决 CO 问题时,算法可能会遇到不同的决策点。例如,B&B 算法必须选择一个变量进行分支,这是一个至关重要的决定。
受 ML 技术的启发,Alvarez 等人 (2017) 和 Khalil 等人(2016) 提出嵌入 B&B 树中的不同基于 ML 的分支规则,以实现更高的效率。还有关于训练 ML 模型以选择用于 L 形方法的最优切割(Jia 和 Shen 2019)和用于切割平面算法的 Gomory 切割的研究(Tang 等人 2019)。
至于列生成,据我们所知,只有一项研究将 ML 与列生成联系起来。由于列生成中重复出现定价问题,V´aclav´ık 等人 (2018) 应用了一个快速回归模型,该模型根据历史数据预测定价问题的严格上限。因为本文中讨论的定价问题是由 MIP 求解器解决的,所以预测可以用作加速 MIP 的非常好的上限。在两种不同类型的调度问题中,它为最终的 B&P 算法节省了近 40% 和 22% 的 CPU 时间。
四、数学公式和定价算法
4.1 三索引公式
首先为该问题提出一个三索引公式,它使用两个决策变量族。
对于每个弧 ( i , j ) (i, j) (i,j)和每个车辆 k k k,如果车辆 k k k 经过弧 ( i , j ) (i, j) (i,j),则二进制变量 x i , j k x_{i,j}^k xi,jk 取值 1;连续变量 s i k s^k_i sik 表示车辆 k k k 对客户 v i v_i vi 的服务开始时间。
装载约束需要以下符号:
Γ Γ Γ 是满足加载约束和标准 VRPTW 约束的所有路径的集合; Γ ˉ \bar{Γ} Γˉ 表示满足标准 VRPTW 约束的路由; A ( γ ) A(γ) A(γ) 表示路径 γ ∈ Γ γ ∈ Γ γ∈Γ 中的弧集。因此,2L-VRPTW 可以建模如下:
-
目标函数 (1) 最小化车队行驶的总距离
-
约束 (2) 表示车辆最多有一条路线要执行
-
约束 (3) 强制每个客户只被服务一次
-
约束 (4)流守恒约束(出度 = 入度)
-
约束 (5–6) 确保来访客户的时间顺序以及硬时间窗口约束。我们假设车辆的速度等于 1,因此消耗的时间量等于行驶的距离
-
约束 (7) 确保满足车辆重量限制
-
约束 (8)表示任何违反装载约束的路径都被排除在可行域之外
-
约束 (9) 决策变量的定义约束
4.2 集合覆盖公式(2L-VRPTW)
设 λ r λ_r λr 为决策变量,其中
令
d
~
r
\tilde{d}_r
d~r 为路线
r
r
r 上行驶的总距离,
Ω
Ω
Ω 为可行路线集。
a
i
,
r
a_{i,r}
ai,r 是一个二进制常量,指定是否在路径
r
r
r 中访问过客户
i
i
i。如果
i
i
i 被访问过,它取值 1,否则取值 0。
有以下公式:
- 约束 (11)限制了使用车辆的数量
- 约束 (12)表示每个客户至少被拜访一次,但保证在最优解中,每个客户恰好被拜访一次。因为我们可以通过从路线中删除重复的客户同时减少总距离来获得更好的解决方案
- 约束 (13)决策变量的定义约束
Ω Ω Ω 是一个非常庞大的可行路线集合。从计算的角度来看,枚举 Ω Ω Ω 中的所有路径来构建公式(10)-(13)是不切实际的。
因此,采用列生成法。
4.3 定价子问题
解决定价问题的目标是获得具有负 ReducedCost 的改进列。
令 π 0 π_0 π0 为与约束 (11) 关联的对偶变量,令 π j , ∀ j ∈ N π_j, ∀j ∈ N πj,∀j∈N 为与约束集 (12) 关联的对偶变量。
提出定价问题的数学公式如下
4.3.1 数学公式
该公式类似于 (1)–(9)。它试图搜索从站点出发并在汇聚节点结束的有效路线,以最大限度地减少降低的成本 (14)。
如果约束集 (22) 放宽,则问题将简化为正常的 ESPPRC,这已在 Desaulniers 等人 (2006) 中进行了讨论。
我们可以通过将 [PP] 划分为两个阶段来求解:
(1) 求解由放松约束集 (22) 产生的 ESPPRC
(2) 对新列进行装载可行性检查
第一阶段由求解ESPPRC的算法解决,而第二阶段由装箱算法解决
4.3.2 标签算法
由于其实际性能良好,标签算法已广泛用于定价问题(Desrochers 等人 1992 年,Feillet 等人 2004 年,Baldacci 等人 2011年) 。它是 Bellman-Ford-Fulkerson 算法 (Ahuja et al 1995) 的扩展,以标签的形式存储和纠正来自源节点的部分路由。
本文的标签算法的主要结构来自 Feillet 等人 (2004)。标签 L L L 被定义为具有以下数据的 5 元组 ( η ( L ) , t ( L ) , q ( L ) , c ( L ) , μ ( L ) ) (η(L), t(L), q(L), c(L), μ(L)) (η(L),t(L),q(L),c(L),μ(L)):
- η η η:标签的节点, t t t:到达时间, q q q:消耗的容量, c c c:累计成本, μ μ μ:无法到达的客户集合 [ v 1 , v 2 , . . . , v n ] [v_1, v_2, ... , v_n] [v1,v2,...,vn]。
符号 P ( L ) P(L) P(L) 表示由标签 L L L 指示的部分路径。
如果标签 L L L “translated”,表示部分路径 P ( L ) P(L) P(L) 从车厂出发,在 t ( L ) t(L) t(L) 时刻到达当前节点 η ( L ) η(L) η(L),产生了 c ( L ) c(L) c(L) 成本,占用 q ( L ) q (L) q(L) 容量,没有机会将自身扩展到 μ ( L ) μ(L) μ(L) 中的任何节点。
标记算法迭代地扩展与每个客户关联的标签以到达汇聚节点。它以广度优先的方式执行。因此,标记算法的效率高度依赖于消除无希望标签的能力。这会产生基于哪些次优路径可以在搜索过程中安全删除的支配规则。
设 ε ( L ) ε(L) ε(L) 表示从标签 L L L 延伸到汇聚节点的可行路径集。设 ⊕ \oplus ⊕ 表示两条路径之间的串联。设 ψ ψ ψ 为一组标签 ψ ( v i ) = { L 1 , L 2 , . . . , L ∣ Ψ ∣ } ψ(v_i) = \{L_1, L_2, ... , L_{|Ψ|}\} ψ(vi)={L1,L2,...,L∣Ψ∣} 所有标签到达节点 v i v_i vi 的地方。
支配的定义如下:一个标签 L ′ L' L′ , 如果 存在一个标签 L ∈ Ψ ( η ( L ′ ) ) L ∈ Ψ(η(L')) L∈Ψ(η(L′)), ∀ e ∈ ε ( L ′ ) ∀e ∈ ε(L') ∀e∈ε(L′) ,则标签 L ′ L' L′ 被支配并因此被消除:
(1)
P
(
L
)
⊕
e
P(L) \oplus e
P(L)⊕e 是可行的;
(2)
P
(
L
)
⊕
e
P(L) \oplus e
P(L)⊕e 具有较低或相同的负降低成本。
L i ≺ L j L_i ≺ L_j Li≺Lj 表示标签 L i L_i Li 支配标签 L j L_j Lj 。通过定义来检查支配关系效率不高,因为需要枚举所有可能的扩展。相反,计算量小的充分条件被用作优势规则。 Feillet 等人 (2004) 提出的 VRPTW 中 ESPPRC 的经典支配规则如下:
如果我们考虑负载约束,标签定义的差异源于“消耗区域”的表示。一个标量不再能够表示消耗。除了 q ( L i ) q(L_i) q(Li),本文还使用 s ( L i ) s(L_i) s(Li) 表示到目前为止收集到的项目的维度集合,即 [ ( w i 1 , h i 1 ) , ( w i 2 , h i 2 ) , . . . , ( w i ∣ s ( L i ) ∣ , h i ∣ s ( L i ) ∣ ) ] [(w_{i1}, h_{i1}), (w_{i2}, h_{i2}), ... , (w_{i|s(Li)|}, h_{i|s(Li)|})] [(wi1,hi1),(wi2,hi2),...,(wi∣s(Li)∣,hi∣s(Li)∣)] 。
因此,标签可以写为 ( η ( L ) , t ( L ) , q ( L ) , s ( L ) , c ( L ) , μ ( L ) ) (η(L), t(L), q(L), s(L), c(L), μ(L)) (η(L),t(L),q(L),s(L),c(L),μ(L))。在陈述新的支配规则之前,先介绍以下定义:
定义 1:给定两个项目 ( w i , h i ) (w_i, h_i) (wi,hi) 和 ( w j , h j ) (w_j, h_j) (wj,hj),如果 w i ≤ w j w_i ≤ w_j wi≤wj 且 h i ≤ h j h_i ≤ h_j hi≤hj,那么我们表示 ( w i , h i ) ⊑ ( w j , h j ) (w_i, h_i) \sqsubseteq (w_j,h_j) (wi,hi)⊑(wj,hj)
定义 2:给定两组项目 S i S_i Si 和 S j S_j Sj,如果存在一对一映射使得对于任何项目 k ∈ S i k ∈ S_i k∈Si,存在项目 k ′ ∈ S j k' ∈ S_j k′∈Sj 使得 k ⊑ k ′ k \sqsubseteq k' k⊑k′,我们说 S i S_i Si 被 S j S_j Sj 覆盖,表示为 S i ⊑ S j S_i \sqsubseteq S_j Si⊑Sj
根据以上定义,新的支配规则可以表述如下:
推论 1. 对于两个标签 L i ≺ L j L_i ≺ L_j Li≺Lj,如果存在扩展 e e e 使得 L i ⊕ e Li \oplus e Li⊕e 在加载约束方面是不可行的,那么 L j ⊕ e Lj \oplus e Lj⊕e 也是不可行的
处理定理 1 中的第四个条件可以视为解决最大二分匹配 (MBM) 问题,可以描述如下:
给定两组项目 S 1 = { i 1 , 1 , i 1 , 2 , . . . , i 1 , m } , S 2 = { i 2 , 1 , i 2 , 2 , . . . , i 2 , n } S_1 = \{i_{1,1}, i_{1,2}, ... , i_{1,m}\} ,S_2 = \{i_{2,1}, i_{2,2}, ... , i_{2,n}\} S1={i1,1,i1,2,...,i1,m},S2={i2,1,i2,2,...,i2,n},其中 m ≤ n m ≤ n m≤n。如果分别来自 S 1 S_1 S1、 S 2 S_2 S2 的两个项目 i i i、 j j j 有 ( w i , h i ) ⊑ ( w j , h j ) (w_i, h_i) \sqsubseteq (w_j, h_j) (wi,hi)⊑(wj,hj) ,然后在它们之间绘制一条边,如图 2(a) 中的二分图所示。目标是最大化所选边的数量,同时遵守每个项目最多链接到一个所选边的约束。
该实例的最优解如图 2(b) 所示。很容易得出结论,如果最大边数等于 S 1 S1 S1 的基数,那么 S 1 ⊑ S 2 S_1 \sqsubseteq S_2 S1⊑S2。幸运的是,MBM 问题可以转化为多项式可解的最大流问题(Kleinberg 和 Tardos 2006)
然而,可以预见的是,新的支配规则非常薄弱,产生更少的支配标签。
因此,本文还通过简单地使用项目的总面积作为它们在标签中的表示来提出近似支配规则。它类似于 Feillet 等人 (2004) 中的定义,但添加了“总面积(表示为 ν ( L ) ν(L) ν(L))”作为标签属性之一,从而导致标签的定义 ( η ( L ) , t ( L ) , q ( L ) , ν ( L ) , c ( L ) , μ ( L ) ) (η(L), t(L ), q(L), ν(L), c(L), μ(L)) (η(L),t(L),q(L),ν(L),c(L),μ(L)) 以及下面的近似优势规则作为定理 2。
为了区别于精确支配,另一种符号 ≪ \ll ≪ 用来表示 L j L_j Lj 近似被 L i L_i Li 支配
定理 2 不能保证完美的支配,因为总面积较小的标签可能最终在加载约束方面没有可行的扩展。相反,具有更高总面积的标签可以扩展到可行的完整路径,即使它具有更大的负降低成本。尽管如此,定理 2 的优点是提供了允许更多标签的优势规则被支配并且在计算上变得更加简单。
为了弥补可能的误支配,在条件 5 中引入控制参数 α α α 来操纵支配规则的紧密性。这背后的想法如下:在解决定价问题的早期阶段, α = 1.0 α=1.0 α=1.0,可以支配更多的标签。当当前 α α α 没有定价的改进路线时,将调整参数以削弱优势条件,以便在此过程中释放更多标签。
4.3.3 可行性检查器
为了确保定价路线满足加载约束,必须解决 SPP 的识别版本。
SPP 可以大致描述如下:给定一组矩形物品和一条宽度和高度固定的条带,确定是否所有物品都可以装在条带中(Martello et al 2003)。
在我们的例子中,一旦构建了路线 r,我们需要检查沿路线收集的物品是否可以装在装货区。或者,这也可以看作是装箱问题,我们正在寻找具有单个箱子的解决方案。
要回答这两个问题,检查加载约束是 strongly-NP hard。现在该过程是嵌入在列生成过程中的子例程,它的计算时间预算非常有限。
本文采用了 Côté 等人(2014a)中名为“BLUE”的 SPP 最先进的精确算法(基于Benders分解)作为可行性检查器。
BLUE算法将SPP分解为具有连续性约束的 Bin Packing 问题(1CBP,主程序)和一个已知某一维度坐标的不可旋转非一刀切的二维矩形装箱问题(OF-2KP,从程序)。如果从程序得到了一个可行解,则得到了原问题的最优解,否则根据不可行解找到最小不可行子集,得到组合 Benders Cut 加入主程序,继续迭代。如下图所示:
需要注意的是,可以用 HashMap 数据结构存储不可行的已检查路径,以避免重复检查。
4.3.4 纯列生成算法 PCGA
综上所述,可以得到一个列生成算法。该算法采用基于定理2的标签算法和精确包装算法BLUE对定价问题进行求解
称之为“纯列生成算法”:PCGA
我根据我的理解画了一个 PCGA 流程图,如下所示
五、加速策略
一种传统的策略是将所有 ReducedCost 为负的列都加入RMP,而不做任何可行性检查。
然后我们求解 RMP,对 RMP 最优解中被选择的列进行检测,如果检测到不可行的列,则禁止该列在 RMP 中被选择,然后重新求解 RMP,直到在 RMP 最优解中不存在不可行的列为止。如下图所示
这种策略将大大减少可行性检查的数量。然而,由于隐藏的不可行列,RMP 不得不多次解决。一旦 RMP 规模很大,这种策略就会变得低效
可以设想,如果存在一个预测器,它能阻止尽可能多的不可行列进入主问题,那么进入主问题的不可行列就会减少,上述策略就能加速进行。
5.1 可行性预测器
在本小节中,将展示可行性预测器的细节。首先,预测任务被表述为一个二元分类任务。第二,讨论了解决该任务的候选机器学习模型。第三,确定了训练算法。最后但并非最不重要的是,介绍了预测器的评估标准。
5.1.1 二元分类任务
详见原文4.1.1
5.1.2 机器学习模型
有许多机器学习模型能够解决二元分类任务,包括逻辑回归 (Kleinbaum et al 2002)、决策树 (Song and Ying 2015)、k-nearest neighbors (Peterson 2009)、支持向量机 (Wang 2005) ) 和人工神经网络 (Goodfellow et al 2016) 等。根据没有免费午餐定理 (Wolpert and Macready 1997),没有机器学习模型的容量普遍优于其他模型,因此模型选择在很大程度上取决于特征任务和数据。
机器学习模型的能力是指模型逼近各种函数或分布的能力。通常,具有更好容量的模型会给出更精确的预测;但是,运行模型的速度可能会与容量发生冲突。如果一个模型执行效率低下,它的缓慢会掩盖引入该模型所带来的好处,从而减慢整个列生成算法。也就是说,我们应选择具有足够容量和可接受速度的模型。
在本研究中,我们选择前馈神经网络 (FFNN) (Goodfellow et al 2016) 作为模型,原因如下。
- 大容量:FFNN 是标准的人工神经网络,由多层神经元组成。神经元由非线性函数激活,可以促进整个网络学习非常复杂的分布。有很多超参数,包括层数,每层的神经元数量,神经元激活函数的类型,都是预先确定的。人们可以根据经验调整超参数,以便 FFNN 学习所需的分布。根据实证研究,FFNN 通常具有良好的容量(Caruana 和 Niculescu-Mizil 2006)。
- 柔韧性好:FFNN 通过调整超参数提供足够的灵活性来平衡容量和速度。通过微调,可以为手头的任务找到合适的超参数设置。此外,FFNN 构成了许多高级网络架构的基础,包括递归神经网络、卷积神经网络。由于之前从未研究过二元分类任务,因此从经验上看,哪种架构最适合该任务尚不清楚。可扩展的网络有利于未来的研究。
- 丰富的工具包:有许多支持 FFNN 的易懂、健壮和高效的软件包,例如 Facebook 开发的 Pytorch (Paszke et al 2019),谷歌开发的 TensorFlow (Abadi et al 2016)。这些包为我们从构建模型、训练模型和测试模型方面节省了大量时间。
5.1.3 训练算法
详见原文4.1.3
总结:采用小批量梯度下降算法,收敛更快,能够有效逃离局部最小值
5.1.4 评估指标
详见原文4.1.4
5.2 列生成中的可行性预测器
图 3 显示了可行性预测器与列生成的集成图。
一组列由标记算法生成。然后将这些列提供给可行性预测器,以预测为“可行”或“不可行”。
由于可行性预测器可能会产生错误的标签,因此采取了两种措施:
-
被预测为不可行的列将传递给可行性检查器,而不是直接丢弃以挽救可行但被错误预测为不可行的列。
-
相反,被预测为可行的列被添加到 RMP 中,而不被可行性检查器检查。因此,这可能会在 RMP 中引入一些不可行的列。为了解决这个问题,每次获得主问题的最优解时,可行性检查器都会检查被选中的所有列。一旦我们在其中找到一个不可行的列,相关的 Cut 就会被添加到 RMP 中以删除该列。
5.3 集成列生成算法 ICGA
加入了二分类可行性预测器之后的列生成算法,我们称之为“集成列生成算法”:ICGA
定义 3: 主问题中的列 λ λ λ 被检测为不可行,与该列相关的 Cut 为 x λ ≤ 0 x_λ ≤ 0 xλ≤0 ,其中 x λ x_λ xλ 是 RMP 中与该列对应的决策变量。
陈述 2: 如果将定理 1 应用于 ICGA,ICGA 可以最优地求解 (PP)。
5.4 分支定价算法
本文通过将 ICGA 嵌套在 B&B 树中,实现了 B&P 算法。
本研究采用的分支规则是标准的“弧上分支”(Feillet 2010)。本文选择 best-bound first 作为节点选择策略,因为它对树搜索早期的低效选择更加稳健。
同时应该在搜索树的每个节点清除不可行的列和对应的 Cut ,以保持主问题的大小尽可能小。
本文创建了两个版本的 B&P 算法,即具有近似优势规则的 B&P (B&P-AD) 和具有精确优势规则的 B&P (B&P-ED)。
对于后者,仅当近似优势规则无法找到改进列时才调用精确优势规则。此外,本文还采用了 Clarke 和 Wright 的 Saving 算法(Clarke 和 Wright,1964 年)作为负载约束,以便在 B&P 算法的开始阶段生成良好的路线。
除了承重量外,两个客户之间的连接还必须遵守负载限制。否则,该弧将不能使用。
六、计算实验
本节介绍为 ICGA 和 B&P 算法执行的计算实验。可行性预测器 (FP) 是在依赖于 Pytorch 的 Python 中实现的。列生成和 B&P 算法是基于 CPLEX 12.9 在 C++ 中实现的,作为具有默认设置的 LP 求解器。 FP 在用 Python 训练后,被转换为可在 C++ 中加载的格式。1如果没有指定,所有实验的 CPU 时间限制都设置为 3,600 秒(不包括 FP 的训练时间)。
所有训练均在配备 NVIDIA Tesla K80 作为 GPU 的 Google Colab 上进行。 ICGA 和 B&P 算法在 Intel Gold 6148 Skylake(八核)上以 2.4 GHz 在 CentOS Linux 7.8 下运行,内存限制为 8 GB。
6.1 实例生成
实例分为两个不同的集合:I 型(用来训练FP)和 II 型(用来测试)。
对于类型 I,实例用于为 FP 生成训练样本。每个实例都由其地理特征、时间窗特征和项目特征定义。
6.1.1 地理特征
地理特征指定了仓库和客户的位置。
分为三种情况: Random(记为 R),顾客随机分布在二维平面上;集群(表示为 C),其中客户被分组到少数集群中;混合(表示为 RC),其中以混合方式生成位置。对于 R 实例,我们将仓库设置在 (35, 35) 并通过从离散均匀分布 U ~ [0, 100] 中采样来生成坐标。对于 C 实例,仓库设置为 (40, 50)。每个簇的中心坐标是从离散均匀分布 U ~ [10, 90] 中采样的。
每个集群中的客户数量服从离散均匀分布 U~[8, 9]。对于每个集群,客户的坐标是围绕其中心生成的,具有从离散均匀分布 U ~ [3, 5] 中采样的给定直径。对于 RC 实例,一半的客户是集群的,其他客户是随机分布的。
6.1.2 时间窗口特征
详见原文 5.1.2
6.1.3 项目特征
项目是根据 Iori 等人 (2007) 的表 2 生成的。因为 1 类包装 (PC1) 相当于一维情况,所以它被排除在我们的研究之外。其他包装类别以物品数量和尺寸(高度和宽度)为特征。
类型 II 由两组实例组成。第一组,即 Type II-Sol,是为了比较 PCGA 和 ICGA 而创建的。这些实例建立在 Solomon (1987) 的众所周知的 Solomon 基准实例之上,其方式与 Iori 等人 (2007) 中的相同物品的生成。尽管现有一组 2L-VRPTW 实例与我们的问题相匹配,但我们认为 Solomon 实例在时间窗口约束方面提供了更丰富的特性。
第二组,即 Type II-Kh,是 Khebbache-Hadji 等人 (2013) 创建的文献中的实例,用于显示两种 B&P 算法的解决方案质量。所有实例、训练样本以及 FP 都可以在在线补充资料或网站上找到。
6.2 训练 FP
通过在类型 I 的所有实例上运行 PCGA,收集了近 50,000 个训练样本。然后将原始输入处理成 17 个手工制作的特征作为 FP 的输入,包括:项目总面积与 WH 的比率;分别为以下四个指标的均值、标准差、最大值和最小值。
- 项目宽度与高度的比例
- 项目宽度与 W 的比率
- 物品高度与H之比
- 物品面积与WH之比
本文应用逻辑回归 (LR) 作为 BaseLine,作为 FFNN 的比较器。为 FFNN 模型和 LR 模型提供由 PC2 实例生成的训练样本。训练损失和验证损失分别是训练集和验证集上的损失。训练准确率和验证准确率分别是训练集和验证集上的预测准确率。
图 4(b) 说明了FFNN 和 LR 的训练损失、验证损失、训练精度和预测精度。这些模型最多训练 150 个时期,采用这样的早期停止标准,即如果在最后 50 个时期无法改善验证损失,则终止训练。使用随机梯度下降作为训练算法。训练 FFNN 和 LR 分别需要 6,009 秒和 5,835 秒。
FFNN 的验证准确率高达 94.1%,大部分保持在 90% 以上。
经过训练的 FFNN 模型在模型未“看到”的不同包装类别上进行了测试。
图 5 显示了该模型对其他包装类实例具有良好泛化能力的有力证据。对于PC3,它的预测准确率还是比较令人满意的,超过了90%。对于 PC4,该模型也取得了不错的性能,尤其擅长预测可行列。对于 PC5,模型没能预测对不可行列,但是对于可行列的识别非常准确。
尽管如此,该模型能够捕捉到实例的特征并且具有近乎完美的性能(99.97% 的准确率)。在线补充中的附录 C 显示了 FFNN 的详细超参数。
6.3 列生成算法的实验
ICGA 和 PCGA 之间的比较是为了证明 FP 对所有类型 II-Sol 实例的列生成算法的贡献。
如果未指定,否则所有关于比较的差距都计算为 % g a p = 100 ( z I C G A − z P C G A ) = z P C G A \%gap = 100(z_{ICGA} − z_{PCGA})=z_{PCGA} %gap=100(zICGA−zPCGA)=zPCGA,其中 z z z 是目标值、CPU 时间或与相应算法相关的可行性检查器的调用次数。
结果报告于表 3 和表 4。对于这两个表,O-Gap 表示两种算法得出的最佳目标值的百分比差距。 C-Gap 表示 CPU 时间的百分比差距。 T-Gap 表示可行性检查器调用次数的百分比差距。
从表 3 可以看出:
(1)在各种设置中,ICGA 平均可以获得略好一些的结果;
(2) ICGA 平均减少了 54% 的 CPU 时间;
(3)对于所有类型的实例,ICGA 调用可行性检查器的次数要少得多;总体而言,调用次数减少了约 87%。
在所有封装类别中,观察到 PC2 的 CPU 时间节省最少,而 PC5 的节省时间最多。
这主要归因于 PC2 实例具有较大的项目这一事实。当大多数项目很大时,由于项目总面积对可行性的估计不佳,标记算法会将更多不可行的列定价。由于存在更多不可行的列,因此必须更频繁地调用可行性检查器。相反,PC5 有很多小物品,在这种情况下,物品的总面积提供了一个很好的可行性估计。根据我们的初步实验,不可行的列很少会被定价。出于这个原因,由于建议的列生成机制的性质,可行性检查器被调用的次数要少得多(图 3)。有一个有趣的观察结果表明,ICGA 可以得出稍微好一点的客观值。这可能是由于在主问题中引入了不可行列而导致的对偶空间略有不同。表 4 提供了与地理特征相关的结果。 O-Gap 和 C-Gap 都受到影响。在“混合”实例的情况下,我们可以看到一个显着的 O-gap。关于 CPU 时间,在“随机”实例的情况下,ICGA 表现出更好的性能。随着客户变得更加集群,节省的 CPU 时间会减少。
FP的预测精度是否影响 ICGA 是主要关注点之一。因此,构建了另一个基于逻辑回归模型的 ICGA 版本以供进一步比较。
为了使差异更明显,训练了一个预测准确率明显较低(结果为 64.5%)的逻辑回归模型。然后在 Type II-Sol 实例上运行,比较 ICGA 与 FFNN 获得的结果。在表 5 中,O-Gap、C-Gap 和 T-Gap 列与带有 FFNN 的 ICGA 和带有逻辑回归模型的 ICGA 相关联。
如表 5 所示,具有更高预测精度的 ICGA 与 FFNN 在 CPU 时间和可行性检查时间上完全优于逻辑回归。
在目标值方面,ICGA 与 FFNN 平均略有领先,但似乎模型的预测精度对解决方案质量没有太大影响。
6.4 Branch-and-Price 算法的实验
这部分实验以检验精确分支价格算法(B&P-ED)的最优性证明能力为首要目标,同时说明近似B&P算法即B&P-AD的性能,该算法具有从实用的角度来看更有价值。两种 B&P 算法都在 Type II-Kh 实例上进行了测试。有三组 Type II-Kh 实例,包括 A 类、B 类和 C 类,按时间窗的紧度(紧度的非递减顺序)分类。对于表 6、表 B.1 和表 B.2Obj,表示算法得出的最佳目标值。粗体数字表示相应算法在所有算法中返回最佳目标值。带星号的数字表示证明了目标值的最优性。表 6 中的 Kh-MA 列列出了由 Khebbache-Hadji 等人 (2013) 提出的模因启发法得出的解决方案。然而,在表 B.1 和 B.2 中,由于 Khebbache-Hadji 等人(2013)没有报告 B 类和 C 类实例的模因启发式结果,我们比较我们的算法与 Khebbache 等人 (2009) 中的两种启发式算法。
对于B&P-ED,我们延长了可行性检查器的执行时间和整个时间限制,希望它能尽可能多地求解最优实例。表 6 表明,除了“A802”之外,所有具有 50 个或更少客户的 A 类实例都得到了最佳解决。对于 B 类和 C 类,所有具有 30 个或更少客户和 84 个或更少项目的实例都已关闭(请参阅在线补充中的附录 B)。相比之下,B&P-AD在B&P-ED最优解的43个实例中只有3个实例找不到最优解,这充分证明
-
B&P-AD算法返回的解非常接近最优解
-
B&P-AD 算法改善了表 6 中显示的所有实例的解决方案,平均改善幅度高达 10.74%。
-
B&P-AD 算法在复杂实例上节省了很多时间,且得到了较好的结果
如在线附录中的表 B.1 和 B.2 所示,B 类和 C 类也有大量改进。
七、结论
- 在本研究中,我们解决了具有二维载荷约束的车辆路径问题。
- 开发了新的精确支配规则和近似支配规则来解决定价问题。我们通过注入监督学习模型提出了一种新的列生成机制。
- 实验性的结果表明,这种新算法的性能优于没有监督学习模型的算法。
- 在新的列生成算法的基础上,建立了两种分支价格算法。文献中的几个实例首次得到最优解。大多数解决方案也得到了显着改进。
- 我们提出了一种策略,可以在车辆路径的背景下更好地利用打包算法来加载约束。
- 为了扩展这个想法,可以有两个方向进行进一步的研究。一种是为更复杂的情况开发机器学习模型,例如具有卸载约束的车辆路径问题。另一个正在探索将预测器插入其他算法(例如分支切割算法或元启发式算法)的方法。