Machine-Learning–Based Column Selection for Column Generation

论文阅读笔记,个人理解,如有错误请指正,感激不尽!仅是对文章进行梳理,细节请阅读参考文献。该文分类到Machine learning alongside optimization algorithms。

01 Column Generation

列生成 (Column Generation) 算法在组合优化领域有着非常广泛的应用,是一种求解大规模问题 (large-scale optimization problems) 的有效算法。在列生成算法中,将大规模线性规划问题分解为主问题 (Master Problem, MP) 和定价子问题 (Pricing Problem, PP)。算法首先将一个MP给restricted到只带少量的columns,得到RMP。求解RMP,得到dual solution,并将其传递给PP,随后求解PP得到相应的column将其加到RMP中。RMP和PP不断迭代求解直到再也找不到检验数为负的column,那么得到的RMP的最优解也是MP的最优解。如下图所示:

关于列生成的具体原理,之前已经写过很多详细的文章了。还不熟悉的小伙伴可以看看以下:

02 Column Selection

在列生成迭代的过程中,有很多技巧可以用来加快算法收敛的速度。其中一个就是在每次迭代的时候,加入多条检验数为负的column,这样可以减少迭代的次数,从而加快算法整体的运行时间。特别是求解一次子问题得到多条column和得到一条column相差的时间不大的情况下(例如,最短路中的labeling算法)。

而每次迭代中选择哪些column加入?是一个值得研究的地方。因为加入的columns不同,最终收敛的速度也大不一样。一方面,我们希望加入column以后,目标函数能尽可能降低(最小化问题);另一方面,我们希望加入的column数目越少越好,太多的列会导致RMP求解难度上升。因此,在每次的迭代中,我们构建一个模型,用来选择一些比较promising的column加入到RMP中:

  • Let ℓ \ell be the CG iteration number
  • Ω ℓ \Omega_{\ell} Ω the set of columns present in the RMP at the start of iteration ℓ \ell
  • G ℓ \mathcal{G}_{\ell} G the generated columns at this iteration
  • For each column p ∈ G ℓ p \in \mathcal{G}_{\ell} pG, we define a decision variable y p y_p yp that takes value one if column p p p is selected and zero otherwise

为了最小化所选择的column,每选择一条column的时候,都会发生一个足够小的惩罚 ϵ \epsilon ϵ。最终,构建column selection的模型 (MILP) 如下:

大家发现没有,如果没有 y p y_p yp和约束(8)和(9),那么上面这个模型就直接变成了下一次迭代的RMP了。

假设 ϵ \epsilon ϵ足够小,这些约束目的是使得被选中添加到RMP中的column数量最小化,也就是这些 y p = 1 y_p=1 yp=1的columns。那么在迭代 ℓ \ell 中要添加到RMP的的column为:

总体的流程如下图所示:

03 Graph Neural Networks

在每次迭代中,通过求解MILP,可以知道加入哪些column有助于算法速度的提高,但是求解MILP也需要一定的时间,最终不一定能达到加速的目的。因此通过机器学习的方法,学习一个MILP的模型,每次给出选中的column,将是一种比较可行的方法。

在此之前,先介绍一下Graph Neural Networks。图神经网络(GNNs)是通过图节点之间的信息传递来获取图的依赖性的连接模型。与标准神经网络不同,图神经网络可以以任意深度表示来自其邻域的信息。

给定一个网络 G = ( V , E ) G=(V,E) G=(V,E),其中 V V V是顶点集而 E E E是边集。每一个节点 v ∈ V v \in V v

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值