线性规划的仿射缩放法求解示例
题目描述
考虑以下线性规划问题:
最大化目标函数:\(z = 3x_1 + 5x_2\)
约束条件:
- \(x_1 \leq 4\)
- \(2x_2 \leq 12\)
- \(3x_1 + 2x_2 \leq 18\)
- \(x_1, x_2 \geq 0\)
要求使用仿射缩放法求解该问题,逐步展示从初始内点出发收敛到最优解的过程。
解题过程
1. 标准化问题
首先将问题转化为标准型(等式约束、变量非负)。引入松弛变量 \(x_3, x_4, x_5 \geq 0\):
- \(x_1 + x_3 = 4\)
- \(2x_2 + x_4 = 12\)
- \(3x_1 + 2x_2 + x_5 = 18\)
目标函数:\(z = 3x_1 + 5x_2 + 0x_3 + 0x_4 + 0x_5\)。
约束矩阵 \(A = \begin{bmatrix} 1&0&1&0&0 \\ 0&2&0&1&0 \\ 3&2&0&0&1 \end{bmatrix}\),右端项 \(b = [4,12,18]^T\),成本向量 \(c = [3,5,0,0,0]^T\)。
2. 选择初始内点
仿射缩放法需从严格内点(所有变量 > 0)开始。例如,取 \(x^0 = [1,1,3,10,13]^T\):
- \(x_1 + x_3 = 1 + 3 = 4\)
- \(2x_2 + x_4 = 2×1 + 10 = 12\)
- \(3x_1 + 2x_2 + x_5 = 3×1 + 2×1 + 13 = 18\)
所有变量为正,满足内点条件。
3. 仿射缩放方向计算
设当前迭代点为 \(x^k\),对角矩阵 \(D_k = \text{diag}(x^k)\)。投影矩阵 \(P_k = I - D_k A^T (A D_k^2 A^T)^{-1} A D_k\)。
移动方向 \(d_k = D_k P_k D_k c\)。
步骤详解(以第一次迭代为例):
- \(x^0 = [1,1,3,10,13]^T\),\(D_0 = \text{diag}(1,1,3,10,13)\)。
- 计算 \(A D_0^2 A^T\):
\(D_0^2 = \text{diag}(1,1,9,100,169)\),
\(A D_0^2 A^T = \begin{bmatrix} 1&0&9&0&0 \\ 0&4&0&100&0 \\ 3&2&0&0&169 \end{bmatrix} \begin{bmatrix} 1&0&3 \\ 0&2&2 \\ 1&0&0 \\ 0&1&0 \\ 0&0&1 \end{bmatrix} = \begin{bmatrix} 10 & 0 & 3 \\ 0 & 104 & 4 \\ 3 & 4 & 182 \end{bmatrix}\)。 - 求逆:\((A D_0^2 A^T)^{-1}\)(具体数值略,记为 \(M^{-1}\))。
- 计算 \(P_0 = I - D_0 A^T M^{-1} A D_0\)。
- 方向 \(d_0 = D_0 P_0 D_0 c\),其中 \(D_0 c = [3,5,0,0,0]^T\)。
最终得 \(d_0\) 为梯度 \(c\) 在约束空间内的投影,指向目标函数增长方向。
4. 步长选择与更新
为保证迭代点留在可行域内部,采用保守步长:
\(\alpha_k = 0.99 \times \min \left\{ \frac{-x_i^k}{(d_k)_i} \mid (d_k)_i < 0 \right\}\)。
若 \(d_k\) 无负分量,则问题无界(本例中不会发生)。
更新:\(x^{k+1} = x^k + \alpha_k d_k\)。
5. 收敛判断
重复步骤3-4,直到满足停止条件(如对偶间隙小于阈值 \(\epsilon = 10^{-6}\)):
对偶间隙定义为 \(c^T x^k - b^T y^k\),其中 \(y^k = (A D_k^2 A^T)^{-1} A D_k^2 c\) 为对偶变量估计。
当对偶间隙接近0时,当前解接近最优。
6. 最终结果
经过多次迭代后,解收敛至 \(x^* = [2,6,2,0,0]^T\),目标函数值 \(z^* = 3×2 + 5×6 = 36\)。
与单纯形法结果一致,但仿射缩放法通过内部路径逼近最优解。