线性规划的原始-对偶势下降法求解示例
字数 2188 2025-11-25 22:41:09

线性规划的原始-对偶势下降法求解示例

问题描述
考虑以下线性规划问题:

\[\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\)
对偶间隙接近零,验证强对偶成立。

总结
原始-对偶势下降法通过势函数平衡目标函数优化与约束满足,避免单纯形法的顶点跳跃,适合大规模问题。关键步骤包括构造对偶问题、设计势函数、梯度下降迭代和收敛判断。

线性规划的原始-对偶势下降法求解示例 问题描述 考虑以下线性规划问题: \[ \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\), 对偶间隙接近零,验证强对偶成立。 总结 原始-对偶势下降法通过势函数平衡目标函数优化与约束满足,避免单纯形法的顶点跳跃,适合大规模问题。关键步骤包括构造对偶问题、设计势函数、梯度下降迭代和收敛判断。