OM | 强化学习 + 约束规划求解组合优化问题

这篇具有很好参考价值的文章主要介绍了OM | 强化学习 + 约束规划求解组合优化问题。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

组合优化在航空航天、交通规划以及经济学等众多学科领域中有广泛应用,其目标是在有限集中寻找最优解。然而状态空间过大的问题让目前组合优化变得棘手。在过去的几年中,使用深度强化学习(deep reinforcement learning,DRL)解决组合优化问题受到广泛关注。然而,现有的方法有两大缺点:

  1. 大部分工作主要集中在标准的TSP问题上,推广到其他问题并不容易。
  2. 只能提供一个近似最优解或者满意解,没有一个系统的方法来提升解的质量或者证明其最优性。

另一方面,约束规划(constraint programming,CP)是一种用于解决组合优化问题的有效方法,基于完全搜索的策略,如果时间足够,总可以找到最优解。分支决策是CP的关键选择,用于指导如何探索剩余的搜索空间。

本篇论文 [1] 的工作提出了一种基于DRL和CP的通用方法来解决组合优化问题。方法的核心是将动态规划作为连接两种方法的桥梁,首先通将组合优化问题建模成动态规划形式,再使用深度强化学习方法学习分支搜索方法,将学习到的agent用于CP的分支选取中,从而进一步提升CP的搜索效率提升算法性能。具体的结构如图1所示。

整体结构分为三个阶段,统一表示阶段是指将组合优化问题描述为动态规划模型,该动态规划模型既可以进一步描述为深度强化学习的训练形式用于训练agent,也可以进一步描述为CP模型并根据分支选择策略进行搜索求解。学习阶段主要通过随机生成的方法生成很多约束规划问题的样本,并根据样本进行求解训练。求解阶段将需要求解的问题实例通过动态规划描述为CP模型,并根据学习到的agent进行分支选择求解。图1中的蓝色模块为已有的成熟算法,绿色模块为本文的工作。
强化学习 组合优化,算法,人工智能图1 本篇论文总体方法架构

总的来说,本文结合了search-based和learning-based两种方法。基于搜索的方法可以保证最优解,但是往往不能从历史数据中得到经验,并且搜索过程有很大的提升空间。基于学习的方法可以利用历史经验,但是不能保证最优并且没有行之有效的提升手段。本文的方法结合了两者的优点,既可以保证最优解,又可以利用历史经验,同时还可以提升搜索效率。

将组合优化写为动态规划(DP)模型

动态规划是一种结合数学建模和编程的方法,通常用于解决复杂的优化问题。动态规划主要通过将问题分解为多阶段子问题,并通过状态转移方程将不同状态联系起来。通过最终的状态反向递推求解每个阶段的解。

考虑优化问题 Q : { max ⁡ f ( x ) : x ∈ X ⊆ Z n } \mathcal{Q}:\left\{\max f(x): x \in X \subseteq \mathbb{Z}^n\right\} Q:{maxf(x):xXZn}其中 x i x_i xi是决策变量,用于最小化目标函数 f ( x ) f(x) f(x)。将其改造后的动态规划由以下几部分组成 ⟨ S , X , T , R , V , P ⟩ \left \langle S,X,T,R,V,P\right \rangle S,X,T,R,V,P,现分别进行介绍。

S S S:系统状态:用于描述阶段 i , i ∈ { 1 , . . . , n } i,i \in \{1,...,n\} i,i{1,...,n}时的系统状态 s i s_i si

X X X:系统控制:用于描述阶段 i i i时系统实施的控制 x i x_i xi,其定义域是 D ( x i ) D(x_i) D(xi)

T T T:状态转移函数:用于描述阶段 i i i时系统状态 s i s_i si经过控制 x i x_i xi转移到下一阶段的状态 s i + 1 s_{i+1} si+1,即 T : S × X → S T:S\times X\rightarrow S T:S×XS

R R R:回报函数:用于描述阶段 i i i时系统状态 s i s_i si经过控制 x i x_i xi得到的回报 R ( s i , x i ) R(s_i,x_i) R(si,xi),即 R : S × X → R R:S\times X\rightarrow \mathbb{R} R:S×XR

V V V:可行条件:用于描述阶段 i i i时系统状态 s i s_i si是否可行,用于约束可行动作集,即 V : S × X → { 0 , 1 } V:S\times X\rightarrow \{0,1\} V:S×X{0,1}

P P P:支配条件:用于描述阶段 i i i时系统状态 s i s_i si是否被支配,同样用于约束可行动作集,即 P : S × X → { 0 , 1 } P:S\times X\rightarrow \{0,1\} P:S×X{0,1}

V , P V,P V,P都是用于约束可行动作集的,二者的区别是可行条件V是用于保证模型的可行性,而支配条件 P是用于动作集简化的效率提升手段。

本问题可以通过贝尔曼方程递归迭代求解,即 g i : X → R g_i:X\rightarrow \mathbb{R} gi:XR表示阶段i时的最优值函数,其递归迭代公式为 g i ( s i ) = max ⁡ { R ( s i , x i ) + g i + 1 ( T ( s i , x i ) ) } ∀ i ∈ { 1.. n }  s.t.  T ( s i , x i ) ≠ ⊥ g_i\left(s_i\right)=\max \left\{R\left(s_i, x_i\right)+g_{i+1}\left(T\left(s_i, x_i\right)\right)\right\} \quad \forall i \in\{1 . . n\} \text { s.t. } T\left(s_i, x_i\right) \neq \perp gi(si)=max{R(si,xi)+gi+1(T(si,xi))}i{1..n} s.t. T(si,xi)=

在最终的时刻回报函数是0,依次递推至初始时刻,该值就是Q的最优值,然后通过递推依次赋值给每个阶段的控制 x i x_i xi并进行存储,即可得到最优解。

但是通常动态规划问题面临维数灾挑战,通常的操作是对支配动作进行剪枝,如果满足以下两个条件之一,该动作会被剪枝:​

•根据递推公式,严格地比另一个动作差​
•无法产生一个可行的状态转移​

但是在实际问题中,虽然剪枝策略可以有效的减少搜索空间,但是由于这两个条件是problem-dependent,因此识别这两个条件开销比较大。此外,有的问题即使进行了剪枝,动作集的维数仍然很大。

RL Encoding

强化学习的主要目的是研究并解决智能体的序贯决策问题,可以用四元组<S,A,T,R>定义强化学习的行为。其中, S S S为状态集合, A A A为动作集合, T T T为转移函数, R R R为奖励函数。注意在累积奖励函数中,删除了discounting factor,这是针对优化问题这一具体应用场景的改进。主流强化学习方法包括两类,即value-basedpolicy-based。Value-based的代表性算法Deep Q-learning (DQN),其应用深度网络近似action-value function,即 Q ^ ( s , a , w ) ≈ Q ( s , a ) \hat{Q}(s,a,\boldsymbol{w})\approx Q(s,a) Q^(s,a,w)Q(s,a),进而选择对应值最大的动作。Policy-based的代表性算法Proximal policy gradient (PPO),其基于policy gradient theorem,即 ∇ π ( V π ( s 0 ) ) = E π [ ∇ w l n π ( a ∣ s , w ) Q π ( s , a ) ) ] \nabla_\pi(V^\pi(s_0))=\mathbb{E}_\pi[\nabla_{\boldsymbol{w}}ln\pi(a|s,\boldsymbol{w})Q^\pi(s,a))] π(Vπ(s0))=Eπ[wl(as,w)Qπ(s,a))]直接应用梯度下降优化智能体策略 π \pi π

由于前文已经将原优化问题建模为DP形式,并得到了对应的六元组。本节的关键在于:如何利用六元组和一个给定问题实例 Q p \mathcal{Q}_p Qp生成强化学习所需的四元组?

State

对于DP模型的每一个阶段 i i i,我们定义其状态为 ( Q p , s i ) (\mathcal{Q}_p,s_i) (Qp,si)。其中 s i s_i si是动态变化的,并根据DP模型进行每阶段的实时更新; Q p \mathcal{Q}_p Qp是静态的,在每一个episode保持不变。在实践中,需要设计良好的嵌入层(Embedding layer),以提取状态向量的特征,并进一步将嵌入处理的结果输入后续的神经网络。

Action

给定DP模型在第 i i i阶段的状态 x i x_i xi和控制量 x i x_i xi,当前阶段的动作 a i ∈ A a_i\in\mathsf{A} aiA x i x_i xi具备一一对应关系。当然,在选择某个动作之前,需要根据有效性条件(Validity conditions)、支配条件(Dominance conditions)等判定其可行性。具体公式表示为 A i = { v i ∣ v i ∈ D ( x i ) ∧ V ( s i , v i ) = 1 ∧ P ( s i , v i ) = 1 } \mathsf{A}_i=\{v_i|v_i\in D(x_i)\wedge V(s_i,v_i)=1\wedge P(s_i,v_i)=1\} Ai={viviD(xi)V(si,vi)=1P(si,vi)=1}

Transition

RL的状态转移过程与DP一致,具体公式表示为 s i + 1 = T ( s i , a i ) = ( Q p , T ( s i , a i ) ) = ( Q p , T ( s i , v i ) ) s_{i+1}=\mathsf{T}(s_i,a_i)=(\mathcal{Q}_p,T(s_i,a_i))=(\mathcal{Q}_p,T(s_i,v_i)) si+1=T(si,ai)=(Qp,T(si,ai))=(Qp,T(si,vi))

Reward

奖励函数的设计对于RL来说至关重要,其提供了关键的训练反馈信息。本文指出,在具体的优化问题场景中,首先找到可行解(Feasible solution)相对于最大化奖励值,要处在更高的优先级上。基于此,本文提出了两条奖励函数设计时需要遵守的性质:(1)如果episode e 1 e_1 e1得到的解比episode e 2 e_2 e2的差,那么episode e 1 e_1 e1收集的奖励应该相对更少;(2)存在不可行解的episode收集的奖励,应比得到可行解的episode收集的奖励更少。由此,奖励函数使得智能体首先找到可行解,然后再不断提升可行解的质量。奖励函数具体为 R ( s , a ) = ρ × ( 1 + ∣ U B ( Q p ) ∣ + R ( s , a ) ) \mathsf{R}(s,a)=\rho\times(1+|\mathsf{UB}(\mathcal{Q}_p)|+R(s,a)) R(s,a)=ρ×(1+UB(Qp)+R(s,a))其中, U B ( Q p ) \mathsf{UB}(\mathcal{Q}_p) UB(Qp)表示组合优化问题 Q p \mathcal{Q}_p Qp目标函数值的上界(Upper bound)。缩放因子 ρ \rho ρ将奖励值的空间进行压缩,到更接近于0的区间值。

Network Architecture and Learning Algorithm

为了保证所提出框架的普适性和高效性,针对优化问题的特点,本文引入了两种深度网络架构,以对输入状态进行高质量的嵌入(Embedding)表征。第一个架构是图注意力网络(Graph attention network, GAT),这是由于许多组合优化问题天然地具备图结构,例如旅行商问题、车辆路径规划问题等。第二个架构是Set Transformer,这是由于在诸如投资组合优化问题中,我们希望保证输入变量顺序的不变性,例如编码的输入变量 { x 1 , x 2 , x 3 } \{x_1, x_2, x_3\} {x1,x2,x3} { x 3 , x 2 , x 1 } \{x_3, x_2, x_1\} {x3,x2,x1}应生成一致的输出。

无论是应用DQN还是PPO训练架构,本文均首先随机生成一系列训练样本,并使得训练样本的分布与我们试图解决问题的分布一致,这也是目前绝大多数应用机器学习求解NP-hard优化问题的研究的做法。

CP Encoding

约束规划(constraint programming,CP)是一种泛用性比较好的算法框架,在实际应用中常用于处理复杂的组合问题。因为应用场景和算法框架的相似,但却不像后者应用范围如此之广,所以人们常常将CP与整数规划(LP)进行比较,来更好的理解CP的特点与优势,如下图所示,虽然两种算法的框架都是系统性的搜索,但是在搜索中,CP不需要同时保证所有约束成立,而是对约束逐一分析,即约束传播(constraint propagation),再对变量的值域进行过滤,这使得CP在更复杂的组合问题(可行域连续性较差)中经常有超过LP的表现。
强化学习 组合优化,算法,人工智能
本文中的 CP 问题,可以使用一个四元组进行定义,其中 X X X 是所有变量构成的集合, D D D 是所有变量的值域构成的集合, C C C 是所有约束条件的集合, O O O 是目标函数。本节将会讲解如何通过 DP 模型的六元组得到 CP 所需的四元组并使用该四元组构建 CP 求解模型。

X X X:CP 问题中所需的变量分为两类,与 DP 相同,共有 n 各阶段,每个阶段有两个变量,分别为辅助变量 X i s X_i^s Xis 代表 i 阶段当前模型的状态,决策变量 X i a X_i^a Xia 代表 i 阶段所能够执行的决策动作,值得注意的是求解过程中只对决策变量进行搜索,辅助变量的值可在决策变量确定后通过约束得到。

D D D: CP 问题求解需要所有变量的值域,本文中两类变量的值域分别为 DP 中 S S S X X X 的值域集合。

C C C:包含所有 CP 模型中的约束条件,是 CP 建模的核心,具体的约束如下:

X i s = ϵ ( 1 ) X_i^s = \epsilon \quad(1) Xis=ϵ1
X i s + 1 = T ( X i s , X i a ) ∀ i ∈ { 1 , . . . , n } ( 2 ) X_i^{s+1} = T(X_i^s, X_i^a)\quad \forall i \in\{1, . . .,n\}\quad(2) Xis+1=T(Xis,Xia)i{1,...,n}(2)
v a l i d i t y C o n d i t i o n ( X i s , X i a ) ∀ i ∈ { 1 , . . . , n } ( 3 ) validityCondition(X_i^s, X_i^a) \quad\forall i \in\{1, . . .,n\}\quad (3) validityCondition(Xis,Xia)i{1,...,n}(3)
d o m i n a n c e C o n d i t i o n ( X i s , X i a ) ∀ i ∈ { 1 , . . . , n } ( 4 ) dominanceCondition(X_i^s, X_i^a) \quad\forall i \in\{1, . . .,n\}\quad(4) dominanceCondition(Xis,Xia)i{1,...,n}(4)

约束(1)代表初始状态设置为一个值(例如 ϵ \epsilon ϵ)(2)是通过 DP 的转换函数 T T T 将每个阶段的状态链接到前一个阶段 (3)使用 DP 中的 V V V 检验每个阶段状态的可行性 (4)添加 DP 中的 P P P 增加冗余约束加快收敛

O O O:给出 CP 问题的目标方程,本文中通过将每个阶段 CP 的决策变量与环境变量的取值对应到 DP 问题中得到每个阶段的回报 R R R 并求和。

max ⁡ x a ∑ i = 1 n R ( X i s , X i a ) \max_{x^a}\sum_{i=1}^{n} R(X_i^s, X_i^a) xamaxi=1nR(Xis,Xia)

Search Strategy

从前文中,我们已经将同一个DP模型同时转换为RL模型和CP模型,这使得我们可以将RL中训练得出的agent用于CP求解的搜索过程中,针对于不同的应用场景和不同的RL模型,本文提供了三种不同的CP搜索策略,深度优先分枝定界depth-first-branch-and-bound search (BaB),有限差异束搜索iterative limited discrepancy search (ILDS) 基于数值优化进行搜索,更适合于DQN训练出的Agent,而重启搜索restart based search需要一定的策略随机性,更适合policy-based的强化学习训练模型。

实验结果

为了评估算法的性能,本文在两个应用场景上分别测试了三种基于RL的CP搜索策略的算法,RL和CP不结合各自单独求解的算法以及一些工业求解器的算法,其中第一个测试场景为the travelling salesman problem with time windows (TSPTW),是包含非线性约束的常见组合优化问题,另一个测试场景为4-moments portfolio optimization problem (PORT),则是目标为非线性函数的经典组合优化问题。为确保公平性,训练时常都限制再48小时之内,内存占用在1Gb之内,都使用同一台GPU (Tesla V100-SXM2-32GB)执行所有算法。

TSPTW 实验结果

Table1中,我们可以看在城市的数量增长后 OR-Tools、CP-model 和 DQN 的结果明显差于各种RL和CP的混合方法。在混合方法中,基于 DQN 的搜索在寻找解决方案和证明最优性方面都给出了最好的结果。同时使用cache能够明显的提升混合算法的效率。这是因为RL训练得到模型调用次数极多,使用缓存会节约大量的搜索时间。

Table 1 主要实验结果1
强化学习 组合优化,算法,人工智能

PORT实验结果

Table2中,首先考虑目标函数连续的实例,其中size最小的实例,我们观察到 B a B − D Q N ⋆ BaB-DQN^{\star} BaBDQN, I L D S − D Q N ⋆ ILDS-DQN^{\star} ILDSDQN, 和 C P CP CP模型取得了最好的结果,但只有 B a B − D Q N ⋆ BaB-DQN^{\star} BaBDQN找到了所有的最优解。对于size较大的实例,非线性求解器可获得最佳结果,但紧随其后的是 R B S − P P O ⋆ RBS-PPO^{\star} RBSPPO。目标函数不连续时,非线性求解器由于难以利用求导来求解,而不再占有优势甚至APOPT不再支持这种问题的求解。但混合方法不受此影响,因为事先没有对 DP 公式进行连续性假设。从结果上看,各种混合式的求解算法效果更为优秀。

Table 2 主要实验结果2
强化学习 组合优化,算法,人工智能
Table 2 各算法在100个算例上的运行结果,其中高亮的是表现最好的算法,Sol代表算法给出的最优平均收益,Opt代表达到最优解的算例个数

总结

约束规划算法在组合优化中应用广泛且在复杂组合优化中表现出色,但性能受限于变量的搜索策略,本文通过动态规划作为桥梁联通强化学习和约束规划,将DQN和PPO等强化学习策略和BaB、RBS等搜索策略相结合,使得强化学习训练得到的经验能够帮助更好的进行CP搜索,同时在TSPTW和PORT两个普通组合优化算法表现不佳的非线性应用场景中进行了测试,展现了混合算法的显著提升。

参考文献

[1] Cappart, Q., Moisan, T., Rousseau, L. M., Prémont-Schwarz, I., & Cire, A. A. (2021, May). Combining reinforcement learning and constraint programming for combinatorial optimization. In Proceedings of the AAAI Conference on Artificial Intelligence (Vol. 35, No. 5, pp. 3677-3687).
[2] Burak Gökgür, Brahim Hnich & Selin Özpeynirci (2018) Parallel machine scheduling with tool loading: a constraint programming approach, International Journal of Production Research, 56:16, 5541-5557, DOI: 10.1080/00207543.2017.1421781
[3] Kanet, John J.; Ahire, Sanjay L.; and Gorman, Michael F., “Constraint Programming for Scheduling” (2004). MIS/OM/DS Faculty Publications. Paper 1.文章来源地址https://www.toymoban.com/news/detail-692125.html

到了这里,关于OM | 强化学习 + 约束规划求解组合优化问题的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【多目标规划问题求解】ε-约束算法

    TIME:2022/07/30 Author:雾雨霜星 Web:雾雨霜星的小站 小站原文链接:https://www.shuangxing.top/#/post?id=27 [1]Nima Amjady and Jamshid Aghaei and Heidar Ali Shayanfar. Stochastic Multiobjective Market Clearing of Joint Energy and Reserves Auctions Ensuring Power System Security[J]. IEEE Transactions on Power Systems, 2009, 24(4) : 1841-1854. [

    2024年02月05日
    浏览(173)
  • python求解带约束的优化问题

    带约束的优化问题可被定义为: 在python中,可以使用 scipy 的 optimize 包进行求解,具体求解函数为 linprog ,下面举例说明求解方法: 假设问题被定义为: 首先,求解最大值问题,我们可以通过取负转换为求解最小值问题,包括不等式约束也是如此,那么该问题的python求解代

    2024年02月08日
    浏览(43)
  • 带约束条件的运筹规划问题求解(模拟退火算法实现)

    超级简单的模拟退火算法实现ε٩(๑ ₃ )۶з搭配最简单的线性规划模型进行讲解!但是如果需要的话,可以直接修改程序求解非线性问题哦(´つヮ⊂︎) [max,f(x)=10x_1+9x_2] (s.t.) [6x_1+5x_2leq{60}tag{1}] [10x_1+20x_2leq{150}tag{2}] [0leq{x_1}leq{8}tag{3}] [0leq{x_2}leq{8}tag{4}] 对约束

    2023年04月18日
    浏览(46)
  • scipy求解约束无导数优化问题:SHGO算法

    SHGO,即simplicial homology global optimize,来自2018年的文章,是一种基于组合拓扑学的优化方法,是一个非常新的算法。 这种算法适用于CDFO(constrained deriviate free optimisation)问题,所谓无导数优化,就是把目标函数当作黑箱子处理,而无法获取其一阶导数,自然也不能通过导数来判

    2024年02月14日
    浏览(49)
  • 【数学建模】二次规划求解约束极值问题(Python+Gurobi实现)

    目录 1 概述 2 算例及Python代码实现 2.1 算例 2.2 方法1 2.3 方法1求解结果 2.4 方法2         根据约束条件的不同,二次规划可分为等式约束二次规划问题和不等式约束二次规划问题。等式约束二次规划问题即只含有等式约束,常见的解法有直接消去法、广义消去法、拉格朗日

    2024年02月08日
    浏览(70)
  • 如何用随机方法求解组合优化问题(五)

    这是一篇笔记,是对于B站up主马少平的视频(第四篇 如何用随机方法求解组合优化问题(五))的学习与记录。 【回顾】:局部最优问题 在局部搜索问题中,可能会陷入局部最优解(如上图中的B、C),解决思路是: 以概率接受差解 。 【回顾】:退火过程中 从状态 (i)

    2024年02月12日
    浏览(41)
  • 如何用随机方法求解组合优化问题(一)

    优化问题 设 (x) 是决策变量, (D) 是 (x) 的定义域, (f(x)) 是指标函数, (g(x)) 是约束条件。则优化问题可以表示为求解满足 (g(x)) 的 (f(x)) 最小值问题。即: [min_{xin D}(f(x)|g(x))] 组合优化问题 如果在定义域 (D) 上,满足约束条件 (g(x)) 的解的总数是有限的,则优

    2024年02月13日
    浏览(37)
  • 如何用随机方法求解组合优化问题(四)

    这是一篇笔记,是对于B站up主马少平的视频(第四篇 如何用随机方法求解组合优化问题(四))的学习与记录。 这篇笔记还没有介绍到模拟退火算法,而是记录退火这一物理过程以及相关的公式。 最主要的内容是如何将退火过程的特点迁移到后续的算法设计中。 退火是固体

    2024年02月12日
    浏览(33)
  • 如何用随机方法求解组合优化问题(七)

    这是一篇笔记,是对于B站up主马少平的视频(第四篇 如何用随机方法求解组合优化问题(七))的学习与记录。 一个商人要访问 (n) 个城市,每个城市访问一次,并且只能访问一次,最后再回到出发城市。 问如何规划才能使得行走的路径长度最短。 旅行商问题的解空间非

    2024年02月12日
    浏览(42)
  • 如何用随机方法求解组合优化问题(六)

    这是一篇笔记,是对于B站up主马少平的视频(第四篇 如何用随机方法求解组合优化问题(六))的学习与记录。 算法实现需要确定的参数: 初始温度 (t_0) ; 温度 (t) 的衰减函数,即温度的下降方法; 算法的终止准则,终止温度 (t_f) 或者终止条件; 每个温度 (t) 下的

    2024年02月12日
    浏览(41)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包