一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

一种基于深度强化学习的二次旅行商问题求解方法和系统

2022-04-25 04:33:59 来源:中国专利 TAG:


1.本发明涉及运筹学/组合优化领域,更具体地,涉及一种基于深度强化学习的二次旅行商问题求解方法和系统。


背景技术:

2.旅行商问题作为一种非常典型的np-hard组合优化问题,而由旅行商问题衍生出来的二次旅行商问题也是一种np-hard问题。与旅行商问题不同的地方在于成本不仅取决于在一个循环中连续遍历的每对两个顶点,还取决于连续遍历的每个三元组顶点。二次旅行商问题主要是在物流的调度管理行业中有着广泛的应用,根据现实生活中对于优化目标的定义不同,又分为角度旅行商问题和角度-距离旅行商问题等,而本发明主要就是研究上述的角度旅行商问题和角度-距离旅行商问题。
3.二次旅行商问题定义在有向完全图g=(v,e)上,其中v代表点集,包含了n个待访问的点;e代表边集。二次旅行商问题可以是对称性问题也可以是非对称性问题,本发明主要考虑对称性问题,即问题保证边集e中方向相反的边(i,j)与(j,i)长度相等。约束是需要从某一点出发,然后访问集合v中其他所有点一次且仅一次,然后返回出发点。二次旅行商问题寻找成本最小的旅行,其中成本与连续遍历的每个三元组顶点相关联。对于角度旅行商问题来说,问题的目标为最小化访问顶点时所有的转角变化。对于角度距离旅行商问题来说,问题的目标为最小化访问顶点时所有的转角变化和访问所有顶点并且回到出发点后的总路程的带权和(权重已知且是约定成俗的)
4.目前解决如角度旅行商问题和角度距离旅行商问题主要有两类方法,一类是基于整数规划的精确解法,如利用分支定界算法和分支剪界算法等,这类算法的思路是遍历所有解空间,并剔除不可能是最优解的空间。这类算法的优势在于对于小规模问题(算例不多,算例即需要访问的点数)求解能得到精确解,但是,在稍微大的规模问题上(算例较多)往往耗时较长,甚至无法求解。另一类是启发式算法,如最便宜的插入启发式、双向最近邻启发式、分配修补启发式等等。这类启式算法一般首先需要一个或一组最优解,之后迭代对这些解进行优化,显然迭代计算效率不高,并且这类方法不能得到精确解,而往往是得到一个近似解。
5.现有技术中提供一种基于深度强化学习的旅行商问题求解方法,首先随机生成满足一定数据分布的节点特征序列作为训练集及验证集,结合transformer网络及图注意力网络构建编码器模块,利用上下文节点及多头注意力算法构建解码器模块,引入掩码机制使得网络输出的解满足旅行商问题的解约束,最后设计快速高效的强化学习训练算法提高模型的泛化能力及精确度。该方案适用于最原始的旅行商问题,对二次旅行商问题无法求解。


技术实现要素:

6.本发明的首要目的是提供一种基于深度强化学习的二次旅行商问题求解方法,快
速高质量的获得问题的近似解。
7.本发明的进一步目的是提供一种基于深度强化学习的二次旅行商问题求解系统。
8.为解决上述技术问题,本发明的技术方案如下:
9.一种基于深度强化学习的二次旅行商问题求解方法,包括以下步骤:
10.s1:定义二次旅行商问题,即在有向完全图中的某一顶点,访问剩余所有点集一次且仅一次后回到出发点所需的旅行成本;
11.s2:构建求解二次旅行商问题的深度强化学习框架;
12.s3:通过所述深度强化学习框架求解所述二次旅行商问题,得到访问点序列。
13.优选地,所述步骤s1中的二次旅行商问题,具体为:
14.在有向完全图g=(v,e)中,其中v代表点集,包含了n个待访问的顶点;e代表边集,边集e中方向相反的边长度相等,求从点集v的某一顶点出发,然后访问点集v的剩余所有点集一次且仅一次,最后回到出发点后,所有用的旅行成本。
15.优选地,所述旅行成本与连续访问序列的三元组有关,分为只考虑转角变化的角度旅行商问题,和既考虑转角变化又考虑总路程的角度-距离旅行商问题。
16.优选地,当只考虑转角变化的角度旅行商问题,旅行成本为角度变化成本,所述角度变化成本的计算公式如下:
[0017][0018]
式中,i,j,k∈顶点集v,vi,vj,vk分别代表i,j,k的坐标点,t表示矩阵的转置,使用点乘法求得向量(i,j)和向量(j,k)的标准内积。
[0019]
优选地,当既考虑转角变化又考虑总路程的角度-距离旅行商问题,旅行成本为角度-距离成本,所述角度-距离成本的计算公式如下:
[0020][0021]
式中,是角度变化成本,为回转半径。
[0022]
优选地,所述步骤s2中的深度强化学习框架包括状态、智能体、动作和奖励,其中:
[0023]
所述状态包括所有顶点的坐标信息,以及出发点、已经访问过的顶点、未访问的顶点和正在访问的顶点的信息;
[0024]
所述智能体的输入为所述状态的信息,所述智能体在不同状态下进行决策,得到对应的动作;
[0025]
所述动作为下一个访问点,并且根据所述动作更新当前状态信息;
[0026]
所述奖励为从起始点,访问其余所有顶点后返回起始点的旅行成本的相反数,利用奖励训练所述智能体。
[0027]
优选地,所述智能体为深度神经网络,采用端到端的输出方式,输入是无序的顶点坐标,输出是有序的顶点序列,计算顶点序列的相应目标成本,然后采用强化学习的方式来优化。
[0028]
优选地,所述深度神经网络采用编码-解码的注意力模型,分为编码器部分和解码
器部分:
[0029]
编码器部分:
[0030]
编码器包括全连接层和n层第一网络,其中,所述编码器的输入为所有顶点集v中的顶点坐标信息,所述编码器的输入依次经所述全连接层和n层第一网络后输出,所述编码器的输出为顶点坐标的特征向量,所述第一网络依次包括自注意力网络、归一化层和前向网络;
[0031]
解码器部分:
[0032]
解码器包括全连接层、自注意力网络和前向网络,所述解码器的输入为顶点坐标的特征向量、上一个已访问点的特征向量以及所有待访问点的特征向量,所述解码器的输入依次经全连接层、自注意力网络和前向网络后,先判断未访问点和筛选未访问点,得到最终输出,所述解码器的输出为所有待访问点被访问的概率pi。
[0033]
优选地,当解码器得到一个完整的序列时,会得到这组解的奖励,在角度旅行商问题中,奖励为总转角,在角度-距离旅行商问题中,奖励为总转角和总路程的带权和,通过带基准的策略梯度法来优化智能体,保留当前的智能体θ和之前的最优智能体θ

,具体算法流程如下:
[0034]
随机初始化θ和θ

,迭代n次,每次迭代都会随机生成k个算例,利用智能体θ和θ

来计算出解序列τi和τ
′i然后利用损失函数对模型θ进行更新,更新使用adam优化器以10-4
的初始学习率来更新损失函数,损失函数如下:
[0035][0036]
其中,f(τi)和f(τ
′i)分别为两个解序列τi和τ
′i的总花费,p
θ
为两个解序列对应的概率;
[0037]
之后,利用配对t检验法判断若智能体是否显著优于θ和θ

用于更新θ;并且,若智能体θ已经有m轮未更新,则将θ更新为θ


[0038]
一种基于深度强化学习的二次旅行商问题求解系统,包括:
[0039]
问题模块,所述问题模块定义二次旅行商问题,即在有向完全图中的某一顶点,访问剩余所有点集一次且仅一次后回到出发点所需的旅行成本;
[0040]
深度强化学习模块,所述深度强化学习模块构建求解二次旅行商问题的深度强化学习框架;
[0041]
求解模块,所述求解模块通过所述深度强化学习框架求解所述二次旅行商问题,得到访问点序列。
[0042]
与现有技术相比,本发明技术方案的有益效果是:
[0043]
本发明利用深度强化学习算法,利用深度强化学习的函数拟合能力,用以快速得到二次旅行商问题,尤其是角度旅行商问题和角度-距离旅行商问题的较优解。本发明在极短时间内就能求得二次旅行商问题的近似解,避免了精确解方法求解时间过长,不能实时计算,实时响应,甚至对于问题规模的扩大,并不能得到有效解的问题;同时由于深度强化学习框架模型的拟合能力,避免了启发式算法对迭代计算框架的搭建以及设计者的专业知识的依赖。
附图说明
[0044]
图1为本发明的方法流程示意图。
[0045]
图2为实施例提供的转角变化示意图。
[0046]
图3为深度强化学习框架示意图。
[0047]
图4为编码器结构示意图。
[0048]
图5为解码器结构示意图。
[0049]
图6为本发明的系统模块示意图。
具体实施方式
[0050]
附图仅用于示例性说明,不能理解为对本专利的限制;
[0051]
为了更好说明本实施例,附图某些部件会有省略、放大或缩小,并不代表实际产品的尺寸;
[0052]
对于本领域技术人员来说,附图中某些公知结构及其说明可能省略是可以理解的。
[0053]
下面结合附图和实施例对本发明的技术方案做进一步的说明。
[0054]
实施例1
[0055]
本实施例提供一种基于深度强化学习的二次旅行商问题求解方法,如图1所示,包括以下步骤:
[0056]
s1:定义二次旅行商问题,即在有向完全图中的某一顶点,访问剩余所有点集一次且仅一次后回到出发点所需的旅行成本;
[0057]
s2:构建求解二次旅行商问题的深度强化学习框架;
[0058]
s3:通过所述深度强化学习框架求解所述二次旅行商问题,得到访问点序列。
[0059]
所述步骤s1中的二次旅行商问题,具体为:
[0060]
在有向完全图g=(v,e)中,其中v代表点集,包含了n个待访问的顶点;e代表边集,边集e中方向相反的边长度相等,求从点集v的某一顶点出发,然后访问点集v的剩余所有点集一次且仅一次,最后回到出发点后,所有用的旅行成本。
[0061]
有向完全图g=(v,e)上,在连续访问顶点i,j,k(i,j,k∈v)所形成的转角即为向量(i,j)与向量(j,k)所形成的夹角,如图1所示。特别地,顶点i,j,k所形成的转角和顶点k,j,i所形成的转角一般情况下不相同。而距离成本即为坐标之间的直线距离,即顶点i到顶点j的距离和从顶点j到顶点i的距离相等。坐标点i(i∈v)的范围为[0,500]。
[0062]
所述旅行成本与连续访问序列的三元组有关,分为只考虑转角变化的角度旅行商问题,和既考虑转角变化又考虑总路程的角度-距离旅行商问题。
[0063]
当只考虑转角变化的角度旅行商问题,旅行成本为角度变化成本,所述角度变化成本的计算公式如下:
[0064][0065]
式中,i,j,k∈顶点集v,vi,vj,vk分别代表i,j,k的坐标点,t表示矩阵的转置,使用点乘法求得向量(i,j)和向量(j,k)的标准内积。
[0066]
当既考虑转角变化又考虑总路程的角度-距离旅行商问题,旅行成本为角度-距离成本,所述角度-距离成本的计算公式如下:
[0067][0068]
式中,是角度变化成本,为回转半径,回转半径
[0069]
所述步骤s2中的深度强化学习框架包括状态、智能体、动作和奖励,如图3所示,其中:
[0070]
所述状态包括所有顶点的坐标信息,以及出发点、已经访问过的顶点、未访问的顶点和正在访问的顶点的信息;
[0071]
所述智能体的输入为所述状态的信息,所述智能体在不同状态下进行决策,得到对应的动作;
[0072]
所述动作为下一个访问点,并且根据所述动作更新当前状态信息;
[0073]
所述奖励为从起始点,访问其余所有顶点后返回起始点的旅行成本的相反数,利用奖励训练所述智能体。
[0074]
所述智能体为深度神经网络,采用端到端的输出方式,输入是无序的顶点坐标,输出是有序的顶点序列,计算顶点序列的相应目标成本,然后采用强化学习的方式来优化。
[0075]
在二次旅行商问题中,状态的范围很大,需要一个模拟能力强的模型,所述深度神经网络采用编码-解码的注意力模型,分为编码器部分和解码器部分,编码器部分将有向完全图g=(v,e)的顶点集v的坐标信息进行编码得到特征向量,解码器根据特征向量以及状态信息解码得到下一个待访问的点,对这个点做掩盖处理,防止被再次访问,然后将这个点编码得到新的特征向量用以继续求解,直到解得包含顶点集v的所有顶点一次且仅一次(除了起始点以外)的回路:
[0076]
编码器部分,如图4所示:
[0077]
编码器包括全连接层和n层第一网络,其中,所述编码器的输入为所有顶点集v中的顶点坐标信息,所述编码器的输入依次经所述全连接层和n层第一网络后输出,所述编码器的输出为顶点坐标的特征向量,所述第一网络依次包括自注意力网络、归一化层和前向网络;
[0078]
解码器部分,如图5所示:
[0079]
解码器包括全连接层、自注意力网络和前向网络,所述解码器的输入为顶点坐标的特征向量、上一个已访问点的特征向量以及所有待访问点的特征向量,所述解码器的输入依次经全连接层、自注意力网络和前向网络后,先判断未访问点和筛选未访问点,得到最终输出,所述解码器的输出为所有待访问点被访问的概率pi。
[0080]
编码器部分将有向完全图g=(v,e)的顶点集v的坐标信息进行编码得到特征向量,解码器根据特征向量以及状态信息解码得到下一个待访问的点,对这个点做掩盖处理,防止被再次访问,然后将这个点编码得到新的特征向量用以继续求解,直到解得包含顶点集v的所有顶点一次且仅一次(除了起始点以外)的回路。编码器如图4所示,输入所有的顶点坐标,经过编码器得到顶点坐标的特征向量,利用这个特征向量和上一个已访问点的特征向量以及所有待访问点的特征向量来解码得到所有待访问点被访问的概率pi,解码器最
终会以这些未被访问点的概率pi来挑选出下一个待访问的顶点,并对已访问点进行掩盖操作,避免再次访问,然后更新状态,解码器会根据新的状态来继续解码下一个待访问点。
[0081]
当解码器得到一个完整的序列时,会得到这组解的奖励,在角度旅行商问题中,奖励为总转角,在角度-距离旅行商问题中,奖励为总转角和总路程的带权和,通过带基准的策略梯度法来优化智能体,保留当前的智能体θ和之前的最优智能体θ

,具体算法流程如下:
[0082]
随机初始化θ和θ

,迭代n次,每次迭代都会随机生成k个算例,利用智能体θ和θ

来计算出解序列τi和τ
′i然后利用损失函数对模型θ进行更新,更新使用adam优化器以10-4
的初始学习率来更新损失函数,损失函数如下:
[0083][0084]
其中,f(τi)和f(τ
′i)分别为两个解序列τi和τ
′i的总花费,p
θ
为两个解序列对应的概率;
[0085]
之后,利用配对t检验法判断若智能体是否显著优于θ和θ

用于更新θ;并且,若智能体θ已经有m轮未更新,则将θ更新为θ


[0086]
实施例2
[0087]
本实施例提供实施例1的一个具体实施例,具体为:
[0088]
使用角度旅行商分别在实例大小为30和40的十组数据中进行测试,对于角度-距离旅行商问题我们分别在实例大小为30和40的五组数据中进行测试。角度旅行商测试结果如表1所示,角度-距离旅行商问题测试结果如表2所示。
[0089]
optimal对应的是每组实例数据的精确解opt,ours对应的是本发明方法下的解,gap是本发明与精确解的差距,计算公式为(ours-opt)/opt,而倒数第二行average gap为本发明方法下解的平均差距,optimal gap为启发式算法中的最优解与精确解的差距,可以看出我们的方法明显比启发式算法好。
[0090]
表1
[0091][0092]
表2
[0093]
scale(angle-distance tsp)instance 1instance 2instance 3instance 4instance 5average gapoptimal gapoptimal(size:30)344752.1250336854.0000355992.1250323892.1562337685.2500
‑‑
ours(size:30)358254.3437355992.1250372956.7812346021.5937356417.5625
‑‑
gap(size:30)0.0391650.0568140.0476540.0683230.0554720.05340.0956optimal(size:40)406091.9375393858.8125411524.2812403071.1875407148.6875
‑‑
ours(size:40)420201.8437415699.4062439731.3125419984.9062442513.4687
‑‑
gap(size:40)0.0347450.0554520.0685420.0419620.0868590.05750.1151
[0094]
实施例3
[0095]
一种基于深度强化学习的二次旅行商问题求解系统,如图6所示,包括:
[0096]
问题模块,所述问题模块定义二次旅行商问题,即在有向完全图中的某一顶点,访问剩余所有点集一次且仅一次后回到出发点所需的旅行成本;
[0097]
深度强化学习模块,所述深度强化学习模块构建求解二次旅行商问题的深度强化学习框架;
[0098]
求解模块,所述求解模块通过所述深度强化学习框架求解所述二次旅行商问题,得到访问点序列。
[0099]
相同或相似的标号对应相同或相似的部件;
[0100]
附图中描述位置关系的用语仅用于示例性说明,不能理解为对本专利的限制;
[0101]
显然,本发明的上述实施例仅仅是为清楚地说明本发明所作的举例,而并非是对本发明的实施方式的限定。对于所属领域的普通技术人员来说,在上述说明的基础上还可以做出其它不同形式的变化或变动。这里无需也无法对所有的实施方式予以穷举。凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明权利要求的保护范围之内。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献