非线性规划中的仿射尺度法基础题
字数 2087 2025-10-26 09:00:43
非线性规划中的仿射尺度法基础题
题目描述
考虑一个简单的非线性规划问题:
最小化目标函数 \(f(x) = x_1^2 + x_2^2\)
约束条件为 \(x_1 + x_2 \geq 1\)(即线性不等式约束),且 \(x_1, x_2 > 0\)(严格正约束)。
要求使用仿射尺度法(Affine Scaling Method)求解该问题,并解释其原理和步骤。
解题过程
1. 问题重构与标准化
仿射尺度法主要用于解决线性规划,但也可通过扩展处理特定非线性问题(如目标函数为凸二次型)。本题中,目标函数是凸二次函数,约束为线性,符合仿射尺度法的适用条件。
- 首先将不等式约束转化为标准形式:
\(-x_1 - x_2 \leq -1\)。 - 引入松弛变量 \(s \geq 0\),将约束写为等式形式:
\(-x_1 - x_2 + s = -1\),其中 \(s \geq 0\)。 - 严格正约束 \(x_1, x_2 > 0\) 是仿射尺度法的核心要求(内点法特性)。
2. 仿射尺度法核心思想
仿射尺度法是一种内点法,通过迭代始终保持在可行域内部(即满足 \(x > 0, s > 0\)),避免触碰边界。其关键步骤包括:
- 缩放变换:在每次迭代中,通过坐标缩放将当前点映射到“中心”位置,使搜索方向更高效。
- 梯度投影:利用目标函数的梯度信息,在缩放后的空间内构造下降方向。
- 步长控制:确保迭代后点仍严格满足正约束。
3. 算法步骤详解
步骤 1:初始化
选择初始点 \(x^{(0)} = (x_1, x_2)\) 满足 \(x_1, x_2 > 0\) 且约束成立(例如 \(x^{(0)} = (1, 1)\),对应 \(s = 1\))。设定容忍误差 \(\epsilon > 0\)。
步骤 2:构造缩放矩阵
- 定义对角缩放矩阵 \(D_k = \text{diag}(x_1^{(k)}, x_2^{(k)})\),其中 \(k\) 为迭代次数。
- 缩放后的变量为 \(u = D_k^{-1} x\),将原问题转换为缩放空间中的等价问题。
步骤 3:计算搜索方向
- 在缩放空间中,目标函数变为 \(f(u) = u^T (D_k^2) u\)。
- 梯度 \(\nabla f(u) = 2 D_k^2 u\)。
- 约束条件在缩放空间中为 \(A D_k u = b\)(本例中 \(A = [-1, -1]\), \(b = -1\))。
- 搜索方向 \(d_u\) 通过投影梯度法计算:
\[ d_u = -P \nabla f(u), \quad P = I - (A D_k)^T [A D_k^2 A^T]^{-1} A D_k \]
这里 \(P\) 是投影矩阵,确保方向满足约束。
步骤 4:逆缩放与步长选择
- 将 \(d_u\) 映射回原空间: \(d_x = D_k d_u\)。
- 选择步长 \(\alpha\) 使得 \(x^{(k+1)} = x^{(k)} + \alpha d_x > 0\)。通常取 \(\alpha = 0.99 \times \min \left\{ -\frac{x_i}{d_{x_i}} \mid d_{x_i} < 0 \right\}\)(避免触碰边界)。
步骤 5:迭代与收敛检查
- 更新点后,检查梯度投影范数 \(\|d_x\| < \epsilon\)。若满足,则当前点为近似最优解;否则返回步骤 2。
4. 本题的具体计算示例
以初始点 \(x^{(0)} = (1, 1)\) 为例:
- 缩放矩阵 \(D_0 = \text{diag}(1, 1)\)。
- 梯度 \(\nabla f(x) = (2, 2)\)。
- 投影计算:
\(A D_0 = [-1, -1]\),
\(A D_0^2 A^T = 2\),
\(P = I - [-1; -1] (2)^{-1} [-1, -1] = \begin{bmatrix} 0.5 & -0.5 \\ -0.5 & 0.5 \end{bmatrix}\)。 - 搜索方向 \(d_x = -P \nabla f = (-2, 2)\)。
- 步长 \(\alpha = 0.99 \times \min\{1/2\} = 0.495\)。
- 新点 \(x^{(1)} = (1 - 0.99, 1 + 0.99) = (0.01, 1.99)\)。
继续迭代会逼近最优解 \(x^* = (0.5, 0.5)\)。
5. 关键点总结
- 仿射尺度法通过缩放保持内点特性,避免早期单纯形法的边界遍历问题。
- 适用于线性或凸二次问题,收敛速度较慢但稳定性高。
- 严格正约束是算法可行性的核心。