在解决实际问题时,我们常常面临各种约束条件下的最优化问题。为了高效处理这些约束,数学家们提出了多种算法,其中许多方法通过引入松弛变量(Slack Variables)或类似机制来简化问题、提升鲁棒性或扩展应用场景。本文将系统介绍几种依赖松弛变量的经典算法,涵盖其数学原理、核心步骤及实际应用。
目录
- 松弛变量的本质作用
- 单纯形法:线性规划的经典工具
- 内点法:突破边界的优化路径
- 拉格朗日乘子法:对偶理论的基石
- ADMM:分布式优化的利器
- 分支定界法:整数规划的全局搜索
- 有效集法:动态约束管理
- 次梯度法:非光滑问题的解决方案
- 总结与算法选择指南
1. 松弛变量的本质作用
松弛变量通过以下方式简化优化问题:
- 约束转换:将不等式(如 A x ≤ b \mathbf{Ax} \leq \mathbf{b} Ax≤b)转化为等式( A x + s = b , s ≥ 0 \mathbf{Ax} + \mathbf{s} = \mathbf{b}, \mathbf{s} \geq 0 Ax+s=b,s≥0)。
- 可行性保障:允许适度违反约束(如SVM中的分类容错)。
- 理论分析:与互补松弛条件结合,分析最优解的活跃约束。
2. 单纯形法:线性规划的经典工具
核心思想
通过顶点迭代搜索线性目标函数在多面体可行域上的最优解。
松弛变量的角色
- 将不等式转为等式,构造标准型:
max c T x s.t. A x + s = b x , s ≥ 0 \begin{aligned} \max \quad & \mathbf{c}^T \mathbf{x} \\ \text{s.t.} \quad & \mathbf{Ax} + \mathbf{s} = \mathbf{b} \\ & \mathbf{x}, \mathbf{s} \geq 0 \end{aligned} maxs.t.cTxAx+s=bx,s≥0 - 初始基变量通常为松弛变量,通过单纯形表迭代更新基变量。
算法步骤
- 构造初始单纯形表:将目标函数和约束方程写成矩阵形式。
- 选择进基变量:在目标函数行中选取最大正系数对应的变量。
- 选择离基变量:计算右端项与进基变量列的正系数比值,选择最小比值对应的基变量。
- 主元消去:通过高斯消元更新单纯形表,使主元列变为单位向量。
- 迭代终止:当目标函数行所有系数非正时,当前基变量对应最优解。
应用案例
生产计划优化:通过松弛变量将资源限制转化为等式,迭代求解最优生产组合。
3. 内点法:突破边界的优化路径
核心思想
通过障碍函数引导搜索路径在可行域内部逼近最优解,避免直接触碰约束边界。
松弛变量的角色
- 使用对数障碍函数隐式处理不等式约束:
min f ( x ) − μ ∑ i = 1 m ln ( s i ) s.t. A x + s = b . \min \ f(x) - \mu \sum_{i=1}^m \ln(s_i) \quad \text{s.t.} \quad \mathbf{Ax} + \mathbf{s} = \mathbf{b}. min f(x)−μi=1∑mln(si)s.t.Ax+s=b. - 参数 μ > 0 \mu > 0 μ>0控制路径接近边界的程度,逐步缩小 μ \mu μ以逼近最优解。
算法特点
- 多项式时间复杂度:适用于大规模线性或凸优化问题。
- 数值稳定性:对稠密矩阵问题表现优于单纯形法。
应用场景
电力网络调度、结构力学设计。
4. 拉格朗日乘子法:对偶理论的基石
核心思想
将约束优化问题转化为无约束问题,通过乘子平衡目标与约束。
松弛变量的角色
- 对不等式约束 g i ( x ) ≤ 0 g_i(x) \leq 0 gi(x)≤0,引入乘子 λ i ≥ 0 \lambda_i \geq 0 λi≥0,构造拉格朗日函数:
L