拉格朗日松弛(一)——理论及算法

背景

Marshall L.Fisher在1981年发表在《Management Science》上的《The Lagrangian Relaxation Method for Solving Integer Programming Problems》1在2004年被评为“《Management Science》首个50年中十大最具影响力的主题之一”。

在中国知网中,以“拉格朗日松弛”作为关键词在“篇关摘”选项下检索,并对结果进行计量可视化分析可得到如下的图表。

中国知网发文量计量可视化分析从发文量这一指标可以看到,近10年涉及这一方法的论文显著增多。

中国知网主要主题分布
中国知网次要主题分布
从主要主题分布、次要主题分布中可以看到,在理论层面,该方法与动态规划、整数规划、凸优化和启发式算法等知识都有较为紧密的联系。在应用层面,该方法在机组组合、资源分配、调度、供应链和设施选址等领域都有应用。

拉格朗日松弛——理论

理论和算法部分内容参考资料2进行介绍,主要介绍拉格朗日松弛的思想、重要结论和拉格朗日松弛算法,结论的证明和更多内容可参考该书。除此之外,本文也吸纳了网上其他相关资料,帮助读者理解。

松弛的意思即为放松约束,对于一个标准化为求最小值的优化问题,放松约束会使得有可能得到目标函数值更小的解,换言之,松弛可以求得原问题的一个下界,这为评价其他算法的有效性提供了一种途径,也为原问题的求解提供了更多信息。

该方法常用在整数规划和混合整数规划中。

松弛方法主要有以下四种:线性规划松弛(将整数约束松弛至实数约束)、对偶规划松弛(求解对偶规划,根据弱对偶定理,求 拉格朗日松弛(一)——理论及算法 的对偶问题提供了求 拉格朗日松弛(一)——理论及算法 的原问题的一个下界)、代理松弛(通过组合多个约束减少约束的数量,如相加)和拉格朗日松弛。本篇博文介绍拉格朗日松弛。

拉格朗日松弛方法的基本原理:将造成问题难的约束吸收到目标函数中,并使得目标函数仍保持线性,使得变换后的问题可以在多项式时间求解或者尽管不能在多项式时间求解但由于规模较小而可以快速求解3,从而为原问题的求解提供帮助。
问题描述

如上图4所示(细线红框中应为 “拉格朗日松弛(一)——理论及算法” 和 “拉格朗日松弛(一)——理论及算法” ,粗线红框中应为“lower”,“lower bound”表示下界),假设一个问题的约束可以分为两部分,即图中的 拉格朗日松弛(一)——理论及算法拉格朗日松弛(一)——理论及算法拉格朗日松弛(一)——理论及算法拉格朗日松弛(一)——理论及算法拉格朗日松弛(一)——理论及算法),它们的区别是 拉格朗日松弛(一)——理论及算法 只和某一部分变量有关,而 拉格朗日松弛(一)——理论及算法 和所有变量都有关,则 拉格朗日松弛(一)——理论及算法 就是上面所说的“造成问题难的约束”(也称复杂约束)。拉格朗日松弛就是将这个复杂约束放到了目标函数中。关于 拉格朗日松弛(一)——理论及算法 为什么要求非负,可参见5。下图6可以帮助理解。

松弛后目标函数的理解

首先是等式约束的松弛。这里和“线性规划对偶问题中等式约束对应的对偶变量没有符号限制”以及“库恩-塔克条件(KKT条件)中等式约束对应的系数没有符号限制”的原理完全相同,等式约束松弛对应的系数也没有符号限制(两个非负的系数相减得到一个没有符号限制的系数)。

其次是拉格朗日分解。回顾上述问题4,不妨设 拉格朗日松弛(一)——理论及算法 ,与下面的示意图保持一致。
问题描述

子问题一:
拉格朗日松弛(一)——理论及算法子问题二:
拉格朗日松弛(一)——理论及算法子问题三:
拉格朗日松弛(一)——理论及算法分解后的子问题的目标函数值和原问题目标函数值有如下的关系。
拉格朗日松弛(一)——理论及算法对偶问题如下。
拉格朗日松弛(一)——理论及算法可以看到,在拉格朗日松弛的基础上,拉格朗日分解将原问题拆分为了不含复杂约束的子问题,从而可以通过求解较易的子问题来对原问题进行近似。

拉格朗日松弛——算法

拉格朗日松弛算法包含两部分内容:一方面是提供原问题的下界(求解 拉格朗日松弛(一)——理论及算法),另一方面则演变为拉格朗日松弛启发式算法。

次梯度优化算法

次梯度(subgradient)与梯度(gradient)十分相似,次梯度是函数在某些点处不可微时对梯度的一种扩展。引入次梯度是因为 拉格朗日松弛(一)——理论及算法 是一个关于 拉格朗日松弛(一)——理论及算法 的分段线性函数,这一点将在后续说明。

按照2中的编号介绍相关定义和定理如下,详细证明可参看之。

定义 7.4.1 函数 拉格朗日松弛(一)——理论及算法 满足 拉格朗日松弛(一)——理论及算法则称 拉格朗日松弛(一)——理论及算法 为凹函数。

定理 7.4.1 若经拉格朗日松弛后的问题(拉格朗日松弛(一)——理论及算法)的可行解集合 拉格朗日松弛(一)——理论及算法 是有限个整数点的集合,则目标函数 拉格朗日松弛(一)——理论及算法是凹函数。(通过定义证明)

定理 7.4.2 可微函数 拉格朗日松弛(一)——理论及算法 是凹函数的充分必要条件为拉格朗日松弛(一)——理论及算法,存在拉格朗日松弛(一)——理论及算法使得 拉格朗日松弛(一)——理论及算法(类比凸函数的一阶条件理解)

下图1定理 7.4.1结论的示意图(图中的 拉格朗日松弛(一)——理论及算法 即为 拉格朗日松弛(一)——理论及算法 ),随着 拉格朗日松弛(一)——理论及算法 的变化,拉格朗日松弛(一)——理论及算法 在不同的点 拉格朗日松弛(一)——理论及算法拉格朗日松弛(一)——理论及算法拉格朗日松弛(一)——理论及算法拉格朗日松弛(一)——理论及算法拉格朗日松弛(一)——理论及算法)处达到最小值,而当 拉格朗日松弛(一)——理论及算法 不变时,拉格朗日松弛(一)——理论及算法 关于 拉格朗日松弛(一)——理论及算法 是一线性函数,故总结来看 拉格朗日松弛(一)——理论及算法 关于 拉格朗日松弛(一)——理论及算法 是一分段线性函数,亦是凹函数。每段直线表示取最小值的 拉格朗日松弛(一)——理论及算法 点保持不变。
分段线性图示

定义 7.4.2 若函数 拉格朗日松弛(一)——理论及算法 为凹函数,且在点 拉格朗日松弛(一)——理论及算法 处,向量 拉格朗日松弛(一)——理论及算法 满足 拉格朗日松弛(一)——理论及算法则称 拉格朗日松弛(一)——理论及算法 为函数 拉格朗日松弛(一)——理论及算法拉格朗日松弛(一)——理论及算法处的一个次梯度。拉格朗日松弛(一)——理论及算法拉格朗日松弛(一)——理论及算法 处的所有次梯度组成的集合记为 拉格朗日松弛(一)——理论及算法。(直观理解,在一元函数的情况下,次梯度可以是函数在 拉格朗日松弛(一)——理论及算法 处左导数和右导数之间的任何一个值。)

定理 7.4.3拉格朗日松弛(一)——理论及算法 为凹函数,拉格朗日松弛(一)——理论及算法拉格朗日松弛(一)——理论及算法 最优解的充分必要条件为 拉格朗日松弛(一)——理论及算法

次梯度优化算法

  1. STEP1:任选一个初始拉格朗日乘子 拉格朗日松弛(一)——理论及算法,并置 拉格朗日松弛(一)——理论及算法.
  2. STEP2:针对本次迭代的 拉格朗日松弛(一)——理论及算法,求解对偶问题内层的最小化问题,并从 拉格朗日松弛(一)——理论及算法 中任选一个次梯度 拉格朗日松弛(一)——理论及算法;若 拉格朗日松弛(一)——理论及算法,则 拉格朗日松弛(一)——理论及算法 达到最优解而停止计算;否则 拉格朗日松弛(一)——理论及算法,置 拉格朗日松弛(一)——理论及算法, 重复STEP2。

实际应用中不可能迭代无穷多次,故必须给出 拉格朗日松弛(一)——理论及算法 的确定方法和算法停止的条件。

  • 拉格朗日松弛(一)——理论及算法 的确定方法
    实际计算的目的是尽快得到一个可以接受的下界,故常采用启发式的方法进行确定。主要有以下两类方法。
    第一类方法是使 拉格朗日松弛(一)——理论及算法 以指数速度下降,迭代次数较少。更新公式如下。
    拉格朗日松弛(一)——理论及算法第二类方法的主要思想是用对偶问题的上下界的差修正 拉格朗日松弛(一)——理论及算法 变化的速度。更新公式如下。
    拉格朗日松弛(一)——理论及算法式中 拉格朗日松弛(一)——理论及算法,一般取 拉格朗日松弛(一)——理论及算法。当 拉格朗日松弛(一)——理论及算法 上升时,拉格朗日松弛(一)——理论及算法 不变,当 拉格朗日松弛(一)——理论及算法 在给定的若干步没有变化时,则 拉格朗日松弛(一)——理论及算法 减半。拉格朗日松弛(一)——理论及算法 为原问题最优目标值的一个上界(从而也是对偶问题的上界),可以用一个可行解确定,或者估计得到。拉格朗日松弛(一)——理论及算法 可随 拉格朗日松弛(一)——理论及算法 的变化而逐步修正。拉格朗日松弛(一)——理论及算法拉格朗日松弛(一)——理论及算法 的一个下界,一般取 拉格朗日松弛(一)——理论及算法,有时为了计算简单只取一个固定值。
  • 算法停止的条件
    算法停止的条件主要有以下四种。
    第一种是迭代次数不超过 拉格朗日松弛(一)——理论及算法。这是一种最为简单的原则,很容易控制计算的复杂性,但解的质量无法保证。
    第二种是 拉格朗日松弛(一)——理论及算法拉格朗日松弛(一)——理论及算法为一较小的正数),这是对理想状态 拉格朗日松弛(一)——理论及算法 的一种近似。
    第三种是 拉格朗日松弛(一)——理论及算法,此时表明已经找到原问题的最优解,有 拉格朗日松弛(一)——理论及算法
    第四种是 拉格朗日松弛(一)——理论及算法拉格朗日松弛(一)——理论及算法 在规定的步数内变化不超过一个给定的值,这时可认为目标值不会再变化,因此停止计算。
    具体应用中,可以采用以上停止条件之一,也可以综合运用。

拉格朗日松弛启发式算法

上述提到的内容中有这样一个结论4(红框中应为拉格朗日松弛(一)——理论及算法):对比左边的原问题和右边的对偶问题可以发现,求解对偶问题时可行域有所扩大,因此我们在求解对偶问题时得到的较优的解(由次梯度优化算法给出)可能并不是原问题的可行解,此时通常根据问题的特点采用启发式的方法将该解修正为原问题的可行解,整个过程构成了拉格朗日松弛启发式算法。
原问题和对偶问题比较

参考资料


  1. Fisher, M.L. 1981. The Lagrangian Relaxation Method for Solving Integer Programming Problems. Management Science. 27(1) 1-18. ↩︎ ↩︎

  2. 邢文训, 谢金星. 现代优化计算方法(第2版)[M].清华大学出版社, 2005:210-242. ↩︎ ↩︎

  3. 王源. 拉格朗日松弛求解整数规划浅析(附Python代码实例) ↩︎

  4. TransNET. 拉格朗日松弛问题 ↩︎ ↩︎ ↩︎ ↩︎

  5. 想问个问题,为什么拉格朗日乘数法的乘子要大于0? ↩︎

  6. 拉格朗日松弛 PPT ↩︎ ↩︎

文章出处登录后可见!

已经登录?立即刷新

共计人评分,平均

到目前为止还没有投票!成为第一位评论此文章。

(0)
扎眼的阳光的头像扎眼的阳光普通用户
上一篇 2023年3月4日 下午4:29
下一篇 2023年3月4日

相关推荐