拉格朗日松弛法
-
问题引入:为什么需要松弛?
在数学规划中,我们经常遇到复杂的约束条件,这些约束使得问题难以直接求解。例如,在一个复杂的整数规划或组合优化问题中,如果存在一组“麻烦”的约束,它们破坏了问题的某种可分解结构,就会导致求解非常困难。拉格朗日松弛法的核心思想就是:通过将这些“麻烦”的约束从约束条件中移除,并将其违反约束的惩罚项加入到目标函数中,从而得到一个更容易求解的、与原问题相关的“松弛问题”。 -
基本概念:拉格朗日松弛问题的构造
假设我们有一个原始的优化问题(通常是最小化问题),形式如下:- 原始问题 (P):
最小化cᵀx
满足约束:
Ax ≤ b(这些是“简单”约束,用集合 X 表示,即 x ∈ X)
Dx ≤ d(这些是“麻烦”的约束)
拉格朗日松弛法的主要步骤是:
- 松弛: 暂时忽略“麻烦”的约束
Dx ≤ d。 - 惩罚: 将麻烦约束
Dx ≤ d的违反程度(Dx - d)乘以一个非负的惩罚系数(称为拉格朗日乘子向量,记作 λ ≥ 0),然后作为惩罚项加入到目标函数中。 - 构造松弛问题 (LR(λ)):
最小化[cᵀx + λᵀ(Dx - d)]
满足约束x ∈ X(即只保留简单约束Ax ≤ b)
这个新问题
LR(λ)就是原始问题的拉格朗日松弛问题。 - 原始问题 (P):
-
关键性质:松弛问题与原问题的关系
理解以下几点至关重要:- 下界性质: 对于任意给定的乘子向量 λ ≥ 0,拉格朗日松弛问题
LR(λ)的最优目标函数值,总是小于等于原始问题(P)的最优目标函数值。即,v(LR(λ)) ≤ v(P)。因此,LR(λ)为我们提供了原问题最优值的一个下界。在最小化问题中,下界越接近真实最优值,其价值就越大。 - 原因: 对于任何同时满足简单约束和麻烦约束的可行解 x(即原问题的可行解),由于它满足
Dx ≤ d,且 λ ≥ 0,所以惩罚项λᵀ(Dx - d) ≤ 0。因此,这个解在松弛问题中的目标函数值cᵀx + λᵀ(Dx - d)会小于等于它在原问题中的目标函数值cᵀx。松弛问题是在一个更大的可行域(只有X)上寻找最小值,所以其最优值自然不会超过原问题的最优值。
- 下界性质: 对于任意给定的乘子向量 λ ≥ 0,拉格朗日松弛问题
-
拉格朗日对偶问题:寻找最强的下界
既然对于不同的乘子 λ,我们会得到不同质量(或紧度)的下界v(LR(λ))。一个自然的问题是:我们能否找到一组最优的乘子 λ*,使得由LR(λ*)产生的下界是所有这些下界中最强的(即最大的)?
这个寻找最强下界的问题本身就是一个优化问题,称为拉格朗日对偶问题 (LD):- 对偶问题 (LD):
最大化v(LR(λ))
满足约束λ ≥ 0
拉格朗日对偶问题总是一个凸优化问题(具体是分段线性凹函数的最大化问题),这使其相对容易求解。
v(LD)是所有可能乘子下能得到的最好(最大)的下界。 - 对偶问题 (LD):
-
优势与应用场景
拉格朗日松弛法之所以强大,在于它能够利用问题的内在结构。- 可分解性: 如果麻烦约束是连接不同变量块的约束(如
x₁ + x₂ ≤ d),松弛掉它们后,原问题可能会分解成若干个独立的、更易求解的子问题。例如,一个复杂的网络流问题,在松弛掉某些资源约束后,可能分解为多个最短路径问题。 - 保持易解性: 集合 X 被特意设计为具有“良好”的结构,例如可能是一个网络流问题、一个背包问题,或者其整数约束可以被忽略的线性规划问题。确保
LR(λ)在给定任何 λ 的情况下,都比原问题(P)容易求解得多。 - 获取上界: 在求解
LR(λ)的过程中,得到的解虽然可能违反了麻烦约束Dx ≤ d,但我们可以通过一些启发式方法(如舍入、局部搜索)对其进行“修复”,使其成为原问题的可行解,从而得到一个上界(对于最小化问题)。
- 可分解性: 如果麻烦约束是连接不同变量块的约束(如
-
求解算法:次梯度法
如何实际求解拉格朗日对偶问题(LD)以找到最优(或近似最优)的乘子 λ*?最常用的方法是次梯度法。它是一种迭代算法,思路类似于梯度上升法,但适用于不可导的凹函数。- 迭代公式:
λ^(k+1) = max{0, λ^(k) + θ_k * g_k}
其中,g_k = Dx^k - d是第 k 次迭代的次梯度,x^k是给定λ^(k)时松弛问题LR(λ^(k))的最优解。θ_k是步长。 - 步长选择: 步长的选择对收敛至关重要。常用规则有:恒定步长、递减步长(但不满足平方和无穷大)等。
- 过程: 在每次迭代中,我们求解一个松弛问题,得到解
x^k和下界值,然后根据次梯度更新乘子 λ。同时,我们用启发式方法由x^k产生原问题的可行解,以更新上界。算法在上下界足够接近或迭代次数达到限制时停止。
- 迭代公式:
总结: 拉格朗日松弛法是一种通过将困难约束以惩罚项形式放入目标函数,从而得到一个更易求解的松弛问题的技术。它为原问题提供下界,并通过求解对偶问题来寻找最强下界,结合启发式方法提供上界,共同构成一个强大的优化框架,尤其适用于处理大规模、复杂的组合优化问题。