问小白 wenxiaobai
资讯
历史
科技
环境与自然
成长
游戏
财经
文学与艺术
美食
健康
家居
文化
情感
汽车
三农
军事
旅行
运动
教育
生活
星座命理

运筹学基础:拉格朗日松弛方法详解

创作时间:
作者:
@小白创作中心

运筹学基础:拉格朗日松弛方法详解

引用
CSDN
1.
https://blog.csdn.net/JESSIENOTCAR/article/details/137964954

拉格朗日松弛是运筹学中一种重要的优化方法,主要用于解决带有复杂约束的整数规划问题。通过将难以处理的约束条件转化为目标函数的一部分,可以显著降低问题的求解难度。本文将详细介绍拉格朗日松弛的基本概念、算法流程及其在实际问题中的应用。

基本概念

原问题

考虑如下的整数规划问题:

$$
\begin{align}
\min \quad & c^Tx \
\text{s.t.} \quad & Dx \leq d \tag{1.1}\
& x \in X \tag{1.2}\
& X = {x\in Z^n|Ax\leq b} \tag{1.3}
\end{align}
$$

假设约束(1.1)是难处理的约束,约束(1.3)是容易处理的约束。

松弛问题、拉格朗日乘子、对偶函数

为了减小问题求解的难度,我们自然希望把难约束(1.1)转化到目标函数上去,因此我们定义乘子 $u = (u_1, u_2,...,u_m) \in R^+_m$,然后可得:

$$
\begin{align}
z(u) = \min\quad & c^Tx+u^T(Dx-d) \tag{1.4} \
\text{s.t.} \quad & x\in X \tag{1.5}
\end{align}
$$

我们把上面这个问题称之为松弛问题,$u$ 称为拉格朗日乘子,$z(u)$ 称为对偶函数。

3个注意的地方:

  1. $u$ 是一个向量,它与被松弛掉的约束的数量是一样的;
  2. 拉格朗日乘子的符号问题:
  • 如果约束是 $\leq$,则拉格朗日乘子要 $\geq 0$,
  • 如果约束是 $\geq$,则拉格朗日乘子要 $\leq 0$,
  • 如果约束是 $=$,则拉格朗日乘子不受约束限制。
  1. 对偶函数的输入是拉格朗日乘子,输出是松弛问题的最优值。

对偶问题

我们最大化对偶函数可以得到对偶问题:

$$
\underset{\text{$u \in R^m_+$}}{\max} \quad z(u) \tag{1.6}
$$

其本质是在松弛问题的基础上,搜索能够使得 $z(u)$ 最大的那个 $u$。

三个问题之间的关系

若对偶定义:在原问题($\min$)中,对偶问题最优解 $\leq$ 原问题最优解。即松弛问题是原问题的一个下界,对偶问题是原问题最大的下界。

为什么要用拉格朗日松弛法

  1. 拉格朗日松弛后得到的问题的下界要大于等于直接将01整数变量松弛为[0,1]连续变量的下界;
  2. 如果问题具有linked constraints,那么拉格朗日松弛后可以使问题能够被分解,进而可以降低问题的复杂度;linked constraints指的是将多类变量耦合在一起的约束
  3. 采用拉格朗日松弛后我们会得到拉格朗日乘子,它反应了对偶的信息,可以做很多事情。

还不理解

算法流程

  1. 初始化拉格朗日乘子;
  2. 求解松弛问题;
  3. 采用次梯度法更新拉格朗日乘子,并判断是否满足停止条件,若满足则跳到2求解结束,否则跳到2继续。

核心问题

松弛哪个约束

一般来说,尽量松弛掉linked constraints。具体而言,松弛哪个约束需要考虑以下三点:

  1. 拉格朗日松弛后对偶问题的质量的好坏;
  2. 拉格朗日松弛的松弛问题后的子问题求解难易程度;
  3. 拉格朗日松弛对偶问题的求解难易程度。

松弛后分解的子问题的求解

松弛以后的问题分解大概如下图所示:

一般来说,我们希望松弛以后的问题最好不要是NP-hard。一般子问题规模较小,可以直接让求解器求解。

拉格朗日乘子怎么定

该问题等同于:怎么求解拉格朗日松弛问题的对偶问题,常用的方法是次梯度算法(还没有搞清楚,后面再补)。

参考资料

  1. 拉格朗日松弛求解整数规划浅析
  2. 整数规划的拉格朗日松弛
  3. 《运筹优化常用模型、算法及案例实战——Python+Java实现》
© 2023 北京元石科技有限公司 ◎ 京公网安备 11010802042949号
运筹学基础:拉格朗日松弛方法详解