关于TSP和GCN—NPEC

TSP:

想象一下你自己去参加一个科学会议。这个领域很受欢迎,而且你肯定不想错过任何东西。你选择了几张你想看的海报,自然你必须回到你现在所在的地方:咖啡角。你应该按照哪个顺序去看海报,以尽量减少你四处走动的时间?这就是旅行科学家问题(TSP),你意识到你的问题相当于旅行推销员的问题(方便也TSP)。

启发式

这个世界不是一个游戏,我们希望训练能够做出决策以解决真实问题的模型。这些模型必须学会从一个组合的大量的潜在解决方案集中为一个问题选择好的解决方案。传统上,解决组合优化问题的方法可以分为精确的方法,保证找到最优解,和启发式,权衡最优性的计算代价,尽管精确的方法可以在内部使用启发式,反之亦然。启发式通常以规则的形式表示,规则可以解释为做决策的策略。我们相信这些策略可以使用DNNs进行参数化,并被训练以获得针对许多不同的组合优化问题的新的和更强的算法,类似于DNNs在前面提到的应用程序中提高性能的方式。在本文中,我们主要关注路由问题:一类重要的实际组合优化问题。

GCN—NPEC

算法核心与贡献:

提出了单独的解码器来解码这两个特征的表示。一个解码器的输出是对另一个解码器的监督。我们提出了一种将强化学习方式与监督学习方式相结合的策略来训练模型。通过对真实数据的综合实验,我们发现

  1. 边缘特征在模型中明确考虑;
  2. 联合学习策略可以加速训练的收敛,提高解质量;
  3. 我们的模型明显优于文献中几种众所周知的算法,特别是当问题规模较大时;
  4. 我们的方法推广到了他们训练的问题实例的规模。

应用场景:

例如,在电子商务仓库中,根据一天的订单,它必须派遣一个车队将订购的包裹交付给客户。每辆车必须启动并返回仓库,每位客户都由一辆车服务一次(如图1所示)。车辆的固定成本总额和由于汽油消耗而产生的旅行成本往往是服务提供者关心的问题。因此,在规划车辆路线时,最小化成本是一个目标。

VRP可以概括为一个组合优化问题,它的问题是“有能力的车辆运送给给定的客户的最佳路线是什么?”".在最简单的形式(如例子所示),称为有能力车辆路径问题(CVRP),每辆车负责将物品交付到多个客户节点,车辆携带的物品的总重量不能超过其装载能力;所有车辆必须在给定的位置开始和结束节点,称为仓库;这个问题的目标是最小化与车辆和旅行距离相关的成本。

然而,即使只有几百个客户节点,VRP在计算上也难以达到最优性,并且被归类为np困难问题[7]。关于解决VRP的文献有两种研究来源。一种是基于运筹学(OR)[22–24]技术,另一种是基于深度学习(DL)[6,21]技术。基于or的技术,如数学优化,通常将这个问题表述为一个数学模型[28],并可以通过使用(启发式)精确算法得到(接近)最优解。然而,对于实际规模的问题,即使只有几百个客户节点,这些技术也需要几天甚至几年的时间来找到最优或接近最优的解决方案。这使得它们很难在实践中实现。

在我们求解实际VRP实例的计算实验中,它们的解决方案都没有一个能与基于OR技术的著名启发式求解器(OR-Tools[10])竞争。这促使我们提出一个新的模型,它也可以在解决方案质量上优于基于or的求解器。

[10] Google. 2019. OR-Tools. https://developers.google.com/optimization

[11] Gurobi Optimization, LLC. 2019. Gurobi Optimizer Reference Manual. h

关于OR-Tools bookmark_border:

OR-Tools是一种用于组合优化的开源软件,该软件力求从一组可能的大量解决方案中找出某个问题的最佳解决方案。以下是OR工具可以解决的一些问题示例:

车辆路线:根据给定的限制条件(例如,“这辆卡车承载的重量不能超过20000磅”或“所有送货都必须在两小时内完成”)。

调度:为一组复杂的任务找到最佳调度,其中一些任务需要先完成,然后才能在一组固定的机器或其他资源上执行。

箱装:将各种不同尺寸的对象装入具有最大容量的固定数量的箱中。

在大多数情况下,此类问题具有大量可能的解决方案,计算机过多无法搜索所有解决方案。为了解决这个问题,OR-Tools使用了先进的算法来缩小搜索集的范围,以寻找最佳(或最接近)的解决方案。

OR-Tools包含以下解决方案:

约束编程

用于寻找可行解的方法,用于解决以约束条件表示的问题(例如,无法同时将房间用于两个事件,或者与剪裁内容的距离必须小于软管的长度,或者一次最多只能录制五个电视节目)。

线性和混合整数编程

Glop线性优化器会在指定一组线性不等式(例如,为人员分配作业,或在尽量降低费用的情况下找到一组资源的最佳分配)后,找出线性目标函数的最佳值。也可以通过 Google Apps脚本优化服务使用Glop和混合整数编程软件SCIP

车辆路线

用于在满足指定限制条件的情况下确定最佳车辆路线的专用库。

图表算法

此代码用于查找图表、最短费用流、最大流量和线性总和分配中的最短路径。

下一部分将帮助您快速开始使用OR-Tools

OR的一个例子:

from ortools.linear_solver import pywraplp
from ortools.init import pywrapinit


def main():
   # Create the linear solver with the GLOP backend.
   solver = pywraplp.Solver.CreateSolver('GLOP')
   if not solver:
       return

   # Create the variables x and y.
   x = solver.NumVar(0, 1, 'x')
   y = solver.NumVar(0, 2, 'y')

   print('Number of variables =', solver.NumVariables())

   # Create a linear constraint, 0 <= x + y <= 2.
   ct = solver.Constraint(0, 2, 'ct')
   ct.SetCoefficient(x, 1)
   ct.SetCoefficient(y, 1)

   print('Number of constraints =', solver.NumConstraints())

   # Create the objective function, 3 * x + y.
   objective = solver.Objective()
   objective.SetCoefficient(x, 3)
   objective.SetCoefficient(y, 1)
   objective.SetMaximization()

   solver.Solve()

   print('Solution:')
   print('Objective value =', objective.Value())
   print('x =', x.solution_value())
   print('y =', y.solution_value())


if __name__ == '__main__':
   pywrapinit.CppBridge.InitLogging('basic_example.py')
   cpp_flags = pywrapinit.CppFlags()
   cpp_flags.logtostderr = True
   cpp_flags.log_prefix = False
   pywrapinit.CppBridge.SetFlags(cpp_flags)

   main()

其次,与其他同样使用图嵌入的模型(STRUCT2VEC[5])不同,我们在图网络中不仅输入节点特征,还输入边缘特征(节点之间的距离矩阵)。我们注意到,大多数现有的学习模型都是在假设节点之间的距离是欧几里得的情况下考虑解决问题的,这取决于协调。他们只需要输入网络中的节点特征。我们认为在求解实际车辆路径问题时,考虑节点间的实际距离是很重要的。因为在现实中,出行距离不仅与协调有关,还与许多复杂的因素有关,如道路网络、交通状况、天气等。我们在图2中展示了一个案例,其中图(a)和(b)中客户节点的欧氏距离矩阵是相同的,但在实践中实际的出行距离是完全不同的(注意,我们从GIS平台上获得两个节点之间的出行距离,这是最短的路线)。因此,在本文中,为了了解更多真实交通网络的信息,使我们训练的策略能够解决新的问题,即使是在不同的规模下,我们在GCN中同时输入节点特征(协调和需求)和边缘特征(从GIS中获得的真实行驶距离)。

尽管一些模型考虑了边缘特征,但其有效性并未明确显示[17]。[26]表明边缘特征并不能提高求解VRP的解的质量。然而,在本文中,我们表明,通过使用联合学习策略(将强化学习与监督学习相结合),与未纳入边缘特征相比,边缘特征实际上可以改善结果。

分类解码器。为了使用图边嵌入来生成解,以前的工作[17]通常使用最优解作为监督(标签)来训练解码器。然而,这种方法在我们的情况下并不起作用,因为我们的目标是解决大尺寸的实用VRP,其最优解很少给出,也不能通过使用其他方法轻易得到。

这促使我们开发一种新的方法。直观地说,由于节点嵌入和边缘嵌入都拥有图信息并且彼此完整,因此当方法收敛时,顺序解码器生成的解应该与分类器解码器生成的解相同。因此,我们可以使用由序列预测解码器产生的解决方案作为分类器解码器的监督标签。注意,序列可以转换为一组当前(选定的)边作为车辆路线。例如,序列{0、4、5、1、0、2、3、0}对应于车辆路线存在的边集。它们中的任何一个都可以表示一个VRP实例的解。设当前边的值为1,无边的值为0,我们可以得到一个0-1的矩阵对应一个序列,使。

为了使用作为标签,我们在最后一个GCN层,,的边缘嵌入上使用一个多层感知器(MLP),然后得到一个软最大分布,这可以看作是边存在的概率。具体来说,该值被定义为:

4实验

4.1实验

4.1.1问题集的生成我们根据B2B平台交付系统的真实数据生成了6个问题集,其细节如表2所示。每个问题集都包括用于训练和测试的实例。问题集VRP20、VRP50、VR100、VRP200、VRP400分别有20、50、100、200、400个客户节点,从平台的历史订单中随机选择客户位置和仓库。此外,从{1,..,9}中均匀地选择每个客户节点的离散需求。具体来说,对于不同的问题大小,我们考虑不同的车辆容量,即20 = 30、50=40、100=50、200=60、400=80,其中下标是问题的大小。对于问题集VRP-R,每个实例都是真实的,并且来自于2019年9月在该平台上发出的订单。具体来说,前15天的样本用于训练,后15天的样本用于测试。在这个集合中,问题的大小从20到300不等。对于所有的问题集,两个节点之间的距离由高德地图api2提供。

4.1.2的实现方法为了检验GCN-NPEC模型的有效性,我们将其与几种现有的方法进行了比较。VRP可以被表示为一个混合整数规划(MIP)模型,并通过使用一些最先进的商业求解器(例如Gurobi[11])来求解。然而,我们发现Gurobi(8.1.1)不能在两个小时内收敛到最优性,即使是对于有20个客户的问题。由于有10,000个实例,如果我们使用Gurobi来获得最优解,那么在合理的时间内完成实验是不现实的。因此,我们放弃将我们的方法与Gurobi和已知的最优解进行比较。

作为一种替代方法,我们考虑以下著名的方法作为我们的基线,它已被证明能够在其他问题集上产生接近最优的解决方案:

•OR-Tools:谷歌的操作研究工具[10],调整为解决世界上最艰难的车辆路线问题。它是一个启发式求解器,可以在合理的时间内为大尺寸的vrp生成解决方案。

•PRL:在[26]中提出的一种学习模型,它是基于深度神经网络和一个LSTM编码器。它被证明优于or工具,而且它不需要一个显式的距离矩阵。

•AM:在[21]中提出的一种学习模型,它基于具有协调嵌入的注意模型,不考虑实距离矩阵。它被证明优于一个著名的启发式的VRP,LKH3启发式[14]。

OR-Tools表示基于OR技术的方法,而PRL和AM则是基于dl的方法,就像我们的方法一样。此外,为了证明边缘分类解码器和联合学习策略的有效性,我们训练了一个没有分类解码器(以下称为GCN-Node)的GCN-NPEC模型进行比较。

4.1.3超参数对于所有的学习模型,我们使用固定大小为256的小批量(除了使用= 200,400的VRP,其中我们使用64作为内存约束)。对于基于GCN的模型,我们使用3层GCN作为编码器,2层GRU网络使用256个隐藏单元作为序列预测解码器,并使用3层全连接网络作为分类解码器,隐藏单元分别为256、256、1。所有的参数都在[−0.08,0.08]中随机初始化,并将我们的梯度的2范数剪辑为5.0。此外,对每个节点和边缘特征的描述被嵌入到一个256维的输入中。我们用Adam优化器训练我们的模型,初始学习速率为10−3,每个epoch衰减0.96倍,直到它达到最小的3∗10−6。我们使用上面描述的训练数据,训练了1000个时代。此外,所有模型都采用推出基线策略进行训练,并在推理时采用贪婪搜索策略和波束搜索策略报告其性能。波束搜索是从自然语言处理任务[34]的生成模型中获取一组高概率序列的一种流行方法。由于最佳质量的解决方案可能与最高概率的解决方案不一样,我们也在波束搜索结束时报告了最佳质量的解决方案的结果。

4.1.4评估度量对于问题集VRP20、VRP50、VR100、VRP200和VRP400中的实例,车辆的固定成本为0,旅行距离的单位成本为1。我们根据这些参数计算每个解决方案的成本。由于每个集合集中有10,000个测试实例(VRP200和VRP400有5000个实例),因此我们报告了每个问题集上每个方法的平均成本。此外,我们报告了基于dl的方法和OR-Tools之间的差距,后者由×100%计算,其中某种基于dl的方法的平均成本,是OR-Tools的平均成本。

对于问题集VRP-R中的实例,车辆的固定成本为100,行驶距离的单位成本为1。类似地,我们得到了每种方法在问题集中的测试实例上的平均成本和差距。

4.2实验结果

我们在表3中展示了所有方法的性能。该表分为四个部分,分别是启发式求解器、基于贪婪serach(G)的模型、波束搜索方法(BM)和具有最佳质量解的波束搜索方法(BMS)。请注意,成本是按1值5的规模标准化的。

从表中,首先,我们可以看到基于BMS的模型比使用其他搜索方法的模型性能最好,这表明BMS的性能优于其他搜索方法。其次,在所有搜索方法下,基于GCN的模型(基于RNN)的性能都显著优于其他学习模型(提高了约5%),说明GCN对VRP图的建模是非常有效的。第三,从大多数情况下GCN-NPEC相对于GCN-Node的改进值,我们可以得出结论,对边缘分类解码器的监督是有益的,联合学习策略是有效的。

表3:不同方法的性能。百分比是OR-Tools的解决方案差距,浮动数是平均成本(按15的规模标准化)。在模型列中,(G):贪婪搜索,(BM):波束搜索和(BMS):具有最高解决方案质量的波束搜索。

从表中可以看出,首先,使用BMS的基于dl的模型比使用其他搜索方法的模型性能最好,这表明BMS优于其他搜索方法。其次,基于GCN的模型在所有搜索方法下的表现都明显优于其他(基于RNN的)学习模型(提高约5%),这表明GCN对于VRP图的建模是非常有效的。第三,从大多数情况下GCN-NPEC相对于GCN-Node的改进值可以看出,边缘分类解码器的监督是有益的,联合学习策略是有效的。此外,它证明了边缘特征可以提高解的质量,这与文献[26]的结论是不一致的。更仔细地看,我们可以看到,随着问题规模的增加,GCN-NPEC相对于其他方法的改进也在增加,这表明我们的方法更有能力解决大规模的问题。我们推测潜在的原因是,实际交通网络的复杂性随着问题规模的增加而增加,我们的方法比PRL和AM更有效地学习它。最后,我们可以看到基于GCN-NEPC模型的方法在解决方案质量方面优于OR-Tools。在计算时间上,我们训练的策略可以在几秒钟内解决一个问题实例,而OR-Tools需要几个小时。因此,我们的方法可以比基于OR技术的启发式方法更有效和高效。

我们还在图5中显示了学习曲线的比较。从曲线上可以看出,基于GCN的方法比其他基于dl的方法收敛得更快,这验证了边缘特征可以为模型带来额外的图信息,在求解(实际的)VRP时,将其纳入网络是很重要的。此外,GCN-NPEC的收敛速度快于GCN-Node,验证了联合学习策略的有效性。我们推测序列预测解码器和分类器解码器的学习之间存在相互促进,因此学习收敛速度更快。

我们在表4中展示了解决问题集VRP-R的方法的性能。我们可以看到,GCN-NPEC也表现最好,这说明我们的模型是泛化的,超出了他们所训练的问题实例的大小,这意味着我们不需要为每个问题大小训练模型,并且学习的策略可以用于解决任何大小的问题实例。这使得我们的模型在实际应用中很有吸引力。

此外,使用GCN-NPEC得到的一些示例解可以参见附录A中的图6。这些可视化给了模型学习到的启发式策略的一些见解。有趣的是,我们可以看到有一些视觉上不合理的路径,比如圆圈,这可能是由于真实的交通网络的复杂性。

5.总结

车辆路径规划是现代交通服务提供商的一项重要任务。这是一个计算困难的问题,被归类为NP难问题。具体来说,对于考虑真实地理信息的大规模问题,如何高效地提供可靠的解决方案是非常具有挑战性的。为了克服这一问题,本文提出了一种基于GCN的模型(简称GCN-NPEC),并提出了一种混合学习策略对其进行训练。训练后的策略可以作为一种启发式方法,快速解决问题实例。

我们用地理信息在不同大小的问题集上测试这个模型,这些问题信息是基于一个真实交付系统的数据生成的。我们将该模型与一些著名的现有方法进行了比较。结果表明,GCN-NPEC模型比其他现有的学习模型提高了5%左右。更重要的是,它优于一个著名的基于或技术的启发式求解器。结果还表明,GCN对VRP图的建模是有效的,并且在求解(实际的)VRP时,将边缘特征纳入网络中是很重要的。此外,联合学习策略可以使模型的训练快速收敛,提高求解的质量。

最后,我们注意到,我们的GCN-NPEC模型也可以应用于解决VRP的其他变体,只需做一些微小的修改。这里我们讨论如何应用它来解决接送(PD)问题,其中一些客户需要接送服务,另一些客户需要送货服务,车辆可以提供这两种服务。该问题也适用于电子启动仓库的交付系统。例如,商店有要由仓库运送的包裹,同时,也有可重复使用的托盘/容器或必须返回到仓库的空瓶子。我们认为一个客户需要一项或两种服务,而车辆仍然有承载能力。此外,车辆在仓库开始和结束,所挑选的货物被送到仓库。这个PD问题可以通过仅仅使用第3节中提出的模型来解决。请注意,在编码器的输入特性中,对节点的需求是交付和拾取的总和(非必需服务的值为零)。在解码器中,掩码规则可以保持与3.2.3中的相同。

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值