线性规划的原始-对偶势下降法求解示例
问题描述
考虑以下线性规划问题:
\[\begin{aligned} \min \quad & 4x_1 + x_2 \\ \text{s.t.} \quad & x_1 + 3x_2 \geq 3 \\ & 2x_1 + x_2 \geq 4 \\ & x_1, x_2 \geq 0 \end{aligned} \]
该问题包含两个变量和两个约束条件,目标是找到一组非负解,满足约束条件并使目标函数值最小。原始-对偶势下降法通过结合原始问题与对偶问题的信息,利用势函数指导迭代过程,以高效逼近最优解。
解题过程
1. 构造对偶问题
首先写出原问题的对偶形式。原问题为最小化问题且约束为“≥”,对偶问题为最大化问题,变量 \(y_1, y_2 \geq 0\):
\[\begin{aligned} \max \quad & 3y_1 + 4y_2 \\ \text{s.t.} \quad & y_1 + 2y_2 \leq 4 \\ & 3y_1 + y_2 \leq 1 \\ & y_1, y_2 \geq 0 \end{aligned} \]
对偶约束的系数矩阵是原问题系数矩阵的转置。
2. 引入势函数
定义势函数 \(\Phi(x, y) = q \ln(4x_1 + x_2 - 3y_1 - 4y_2) - \sum_{i=1}^2 \ln(x_i) - \sum_{j=1}^2 \ln(y_j)\),其中 \(q\) 为参数(通常取约束个数加变量个数的倍数)。势函数结合了目标函数差距和变量非负性,其最小值对应原问题与对偶问题的最优解。
3. 初始化可行解
选择初始内点解,需满足严格不等式约束和变量非负:
- 原问题:取 \(x^{(0)} = (2, 1)\),验证约束:
\(2 + 3 \times 1 = 5 \geq 3\),
\(2 \times 2 + 1 = 5 \geq 4\),
目标值 \(4 \times 2 + 1 = 9\)。 - 对偶问题:取 \(y^{(0)} = (0.2, 0.1)\),验证约束:
\(0.2 + 2 \times 0.1 = 0.4 \leq 4\),
\(3 \times 0.2 + 0.1 = 0.7 \leq 1\),
目标值 \(3 \times 0.2 + 4 \times 0.1 = 1.0\)。
初始对偶间隙为 \(9 - 1.0 = 8.0\)。
4. 计算势函数梯度
势函数的梯度指导迭代方向。以第一轮迭代为例:
- 计算势函数关于原变量 \(x\) 的偏导:
\[ \frac{\partial \Phi}{\partial x_1} = \frac{4q}{4x_1 + x_2 - 3y_1 - 4y_2} - \frac{1}{x_1} \]
代入初始值及 \(q=4\),得 \(\frac{\partial \Phi}{\partial x_1} \approx \frac{16}{8} - 0.5 = 1.5\)。
- 类似计算其他偏导,形成梯度向量 \(\nabla \Phi\)。
5. 迭代更新解
采用梯度下降法,沿负梯度方向移动,步长 \(\alpha\) 通过线搜索确定:
\[x^{(k+1)} = x^{(k)} - \alpha \nabla_x \Phi, \quad y^{(k+1)} = y^{(k)} - \alpha \nabla_y \Phi \]
例如,取 \(\alpha = 0.1\),则:
\(x_1^{(1)} = 2 - 0.1 \times 1.5 = 1.85\),
\(x_2^{(1)} = 1 - 0.1 \times 0.8 = 0.92\)(假设 \(\frac{\partial \Phi}{\partial x_2} = 0.8\)),
\(y_1^{(1)} = 0.2 - 0.1 \times (-0.3) = 0.23\)(假设 \(\frac{\partial \Phi}{\partial y_1} = -0.3\)),
\(y_2^{(1)} = 0.1 - 0.1 \times (-0.2) = 0.12\)(假设 \(\frac{\partial \Phi}{\partial y_2} = -0.2\))。
更新后验证可行性(必要时投影回可行域)。
6. 检查收敛条件
重复迭代直至对偶间隙小于阈值(如 \(10^{-6}\))或势函数变化极小。最终解逼近:
\(x^* \approx (1.5, 1.0)\),目标值 \(4 \times 1.5 + 1.0 = 7.0\),
对偶解 \(y^* \approx (0.25, 0.25)\),目标值 \(3 \times 0.25 + 4 \times 0.25 = 1.75\),
对偶间隙接近零,验证强对偶成立。
总结
原始-对偶势下降法通过势函数平衡目标函数优化与约束满足,避免单纯形法的顶点跳跃,适合大规模问题。关键步骤包括构造对偶问题、设计势函数、梯度下降迭代和收敛判断。