非线性规划中的梯度投影法基础题
字数 1949 2025-10-25 20:03:52
非线性规划中的梯度投影法基础题
题目描述
考虑一个简单的非线性约束优化问题:
最小化函数 \(f(x)1, x_2) = (x_1 - 2)^2 + (x_2 - 1)^2\)
约束条件为:
\(x_1 + x_2 \leq 2\)
\(x_1 \geq 0, x_2 \geq 0\)
要求使用梯度投影法求解该问题在约束区域内的极小值点。
解题过程
-
理解问题与算法思想
- 目标函数 \(f(x)\) 是一个二次凸函数(开口向上的抛物面),约束定义了一个三角形区域(第一象限内直线 \(x_1 + x_2 = 2\) 下方的区域)。
- 梯度投影法的核心思想:在每一步迭代中,先沿负梯度方向移动(最速下降),若结果超出约束区域,则将其投影回约束集,再沿投影后的方向搜索。
- 关键操作:计算梯度、判断可行性、执行投影。
-
计算梯度
梯度 \(\nabla f(x) = \begin{bmatrix} 2(x_1 - 2) \\ 2(x_2 - 1) \end{bmatrix}\)。
例如,在任意点 \(x^{(k)} = (x_1^{(k)}, x_2^{(k)})\),梯度为 \(\nabla f(x^{(k)})\)。 -
选择初始点并设置参数
设初始点 \(x^{(0)} = (0, 0)\)(在约束区域内),步长 \(\alpha_k = 0.5\)(固定值,实际可能需线搜索),容差 \(\epsilon = 10^{-3}\)。 -
第一次迭代(k=0)
- 当前点 \(x^{(0)} = (0, 0)\),计算梯度 \(\nabla f(0, 0) = [-4, -2]^\top\)。
- 试探点:沿负梯度移动 \(\tilde{x} = x^{(0)} - \alpha_0 \nabla f = (0, 0) - 0.5 \times [-4, -2] = (2, 1)\)。
- 检查约束:\(2 + 1 = 3 > 2\),违反约束 \(x_1 + x_2 \leq 2\)。
- 投影操作:将 \(\tilde{x} = (2, 1)\) 投影到约束集 \(X = \{ x \mid x_1 + x_2 \leq 2, x_1 \geq 0, x_2 \geq 0 \}\)。
- 投影问题:最小化 \(\| y - (2, 1) \|^2\) 满足 \(y \in X\)。
- 通过几何分析:最近可行点在线段 \(x_1 + x_2 = 2\)(\(0 \leq x_1 \leq 2\))上。计算投影 \(y^*\) 为点 (2,1) 到直线 \(x_1 + x_2 = 2\) 的垂足:
解方程得 \(y^* = (1.5, 0.5)\)。
- 更新方向:\(d^{(0)} = y^* - x^{(0)} = (1.5, 0.5)\)。
- 沿 \(d^{(0)}\) 搜索(这里直接采用投影点作为新点):\(x^{(1)} = (1.5, 0.5)\)。
-
第二次迭代(k=1)
- 当前点 \(x^{(1)} = (1.5, 0.5)\),梯度 \(\nabla f = [-1, -1]^\top\)。
- 试探点:\(\tilde{x} = (1.5, 0.5) - 0.5 \times [-1, -1] = (2, 1)\)(与上次相同)。
- 投影:仍得 \(y^* = (1.5, 0.5)\),方向 \(d^{(1)} = (0, 0)\)。
- 此时 \(d^{(1)} = 0\),算法可能收敛?检查条件:当前点梯度在约束边界上的投影。
-
最优性检查
- 在 \(x^{(1)} = (1.5, 0.5)\),梯度 \(\nabla f = (-1, -1)\)。
- 约束 \(x_1 + x_2 = 2\) 为活跃约束,其法向量为 \((1, 1)\)。
- 梯度投影条件:若 \(-\nabla f\) 可表示为活跃约束法向量的非负组合,则满足一阶最优性。
这里 \(-\nabla f = (1, 1)\),正好等于法向量,乘子为 1 > 0,满足 KKT 条件。 - 因此 \(x^* = (1.5, 0.5)\) 为解,函数值 \(f^* = 0.5\)。
总结
梯度投影法通过迭代的“移动-投影”过程,将无约束优化与约束处理结合。本例中,由于目标函数凸且约束线性,算法快速收敛到全局最优解。实际应用中,步长选择、投影计算效率是关键改进点。