非线性规划中的投影梯度法基础题
字数 1695 2025-10-30 17:43:25
非线性规划中的投影梯度法基础题
题目描述
考虑非线性规划问题:
最小化 \(f(x) = (x_1 - 1)^2 + (x_2 - 2)^2\)
约束条件为:
\(x_1 + x_2 \leq 2\)
\(x_1 \geq 0, x_2 \geq 0\)
初始点 \(x^{(0)} = (0, 0)\),容忍误差 \(\epsilon = 0.01\)。要求使用投影梯度法求解该问题。
解题过程
投影梯度法用于求解带约束的优化问题,其核心思想是:在每一步迭代中,先沿负梯度方向移动,再将结果投影到可行域上,确保解始终满足约束。以下是详细步骤:
- 问题分析
- 目标函数 \(f(x)\) 是凸二次函数,可行域是由线性不等式定义的凸集(一个三角形区域)。
- 投影梯度法的迭代公式为:
\[ x^{(k+1)} = P_\Omega \left( x^{(k)} - \alpha_k \nabla f(x^{(k)}) \right) \]
其中 $ P_\Omega $ 是投影算子,将点映射到可行域 $ \Omega $;$ \alpha_k $ 是步长,可通过线搜索确定。
- 计算梯度
梯度为:
\[ \nabla f(x) = [2(x_1 - 1), 2(x_2 - 2)] \]
在初始点 \(x^{(0)} = (0, 0)\) 处,梯度为 \(\nabla f(0, 0) = (-2, -4)\)。
- 确定步长
采用恒定步长 \(\alpha = 0.1\)(为简化计算,实际中常用线搜索)。
计算未投影的临时点:
\[ z^{(1)} = x^{(0)} - \alpha \nabla f(x^{(0)}) = (0, 0) - 0.1 \cdot (-2, -4) = (0.2, 0.4) \]
- 投影到可行域
可行域 \(\Omega = \{ x \mid x_1 + x_2 \leq 2, x_1 \geq 0, x_2 \geq 0 \}\)。
投影操作 \(P_\Omega(z)\) 等价于求解:
\[ \min_{y \in \Omega} \| y - z \|^2 \]
对于点 \(z^{(1)} = (0.2, 0.4)\):
- 检查约束:\(0.2 + 0.4 = 0.6 \leq 2\),且坐标非负,因此 \(z^{(1)}\) 已在可行域内,投影后 \(x^{(1)} = (0.2, 0.4)\)。
-
迭代与收敛判断
重复上述过程:- 迭代 1:
梯度 \(\nabla f(0.2, 0.4) = (-1.6, -3.2)\)
临时点 \(z^{(2)} = (0.2, 0.4) - 0.1 \cdot (-1.6, -3.2) = (0.36, 0.72)\)
投影:约束 \(0.36 + 0.72 = 1.08 \leq 2\),无需调整,\(x^{(2)} = (0.36, 0.72)\)。 - 迭代 2:
梯度 \((-1.28, -2.56)\),临时点 \((0.488, 0.976)\),投影后仍可行,\(x^{(3)} = (0.488, 0.976)\)。
继续迭代直至连续两步的变化量 \(\| x^{(k+1)} - x^{(k)} \| < \epsilon\)。
最终收敛到近似解 \(x^* \approx (0.5, 1.5)\),此时约束 \(x_1 + x_2 = 2\) 被激活(紧约束)。
- 迭代 1:
-
结果验证
在 \(x^* = (0.5, 1.5)\) 处,目标函数值 \(f(x^*) = 0.5\),且梯度方向与紧约束的法向量平行(库恩-塔克条件成立)。
关键点总结
- 投影梯度法通过梯度下降和投影的交替操作处理约束。
- 投影步骤需高效实现(本例中可行域简单,可直接判断)。
- 步长选择影响收敛速度,自适应线搜索可优化性能。