非线性规划中的信赖域反射算法基础题
题目描述
考虑非线性规划问题:
\[\min f(x) = (x_1 - 2)^2 + (x_2 - 1)^2 \]
\[\text{s.t. } x_1 + x_2 \leq 2 \]
\[-x_1 + x_2 \leq 1 \]
\[x_1, x_2 \geq 0 \]
初始点取为 \(x^{(0)} = (0, 0)\),信赖域半径初始值 \(\Delta_0 = 0.5\)。要求用信赖域反射算法(Trust Region Reflective Algorithm)求解该问题,重点说明子问题构造、反射步骤和收敛判断。
解题过程
-
算法原理概述
信赖域反射算法结合了信赖域法和反射技巧,用于处理带边界约束的优化问题。其核心步骤包括:- 在每次迭代中,用二次模型近似目标函数,在信赖域内求解子问题。
- 若试探步超出可行域,通过反射操作将其映射回可行域。
- 根据实际目标函数下降量与预测下降量的比值,调整信赖域半径。
-
初始化
初始点 \(x^{(0)} = (0, 0)\),目标函数值 \(f(x^{(0)}) = (0-2)^2 + (0-1)^2 = 5\)。初始信赖域半径 \(\Delta_0 = 0.5\),容忍误差 \(\epsilon = 10^{-6}\)。 -
第一次迭代(k=0)
- 构建二次模型:
在 \(x^{(0)}\) 处计算梯度 \(\nabla f(x) = [2(x_1-2), 2(x_2-1)]^T = [-4, -2]^T\),Hessian矩阵 \(H = \begin{bmatrix} 2 & 0 \\ 0 & 2 \end{bmatrix}\)。
二次模型为:
- 构建二次模型:
\[ m_k(p) = f(x^{(k)}) + \nabla f(x^{(k)})^T p + \frac{1}{2} p^T H p = 5 + [-4, -2] p + \frac{1}{2} p^T \begin{bmatrix} 2 & 0 \\ 0 & 2 \end{bmatrix} p. \]
- 求解信赖域子问题:
约束为 \(\|p\| \leq \Delta_0 = 0.5\)。由于梯度方向为 \([-4, -2]^T\),最优步长沿负梯度方向取边界值:
\[ p^{(0)} = -\frac{\Delta_0}{\|\nabla f\|} \nabla f = -\frac{0.5}{\sqrt{20}} [-4, -2]^T \approx [0.2236, 0.1118]^T. \]
- 反射检查:
试探点 \(x^{(0)} + p^{(0)} \approx (0.2236, 0.1118)\) 满足所有约束(验证:\(0.2236+0.1118=0.3354 \leq 2\),其他约束均满足),无需反射。 - 计算实际下降比:
实际函数值 \(f(x^{(0)}+p^{(0)}) \approx (0.2236-2)^2 + (0.1118-1)^2 \approx 4.277\),
预测下降量 \(\Delta m = m(0) - m(p^{(0)}) \approx 5 - 4.277 = 0.723\),
实际下降量 \(\Delta f = f(x^{(0)}) - f(x^{(0)}+p^{(0)}) \approx 5 - 4.277 = 0.723\),
比值 \(\rho = \frac{\Delta f}{\Delta m} = 1 > 0.75\),接受试探点,并扩大信赖域半径 \(\Delta_1 = 1.5 \Delta_0 = 0.75\)。
更新 \(x^{(1)} = (0.2236, 0.1118)\)。
-
第二次迭代(k=1)
- 构建二次模型:
梯度 \(\nabla f(x^{(1)}) \approx [-3.5528, -1.7764]^T\),Hessian 不变。 - 求解子问题:
沿负梯度方向取步长 \(p^{(1)} \approx [0.3354, 0.1677]^T\)(满足 \(\|p\| \leq 0.75\))。 - 反射检查:
试探点 \(x^{(1)}+p^{(1)} \approx (0.5590, 0.2795)\) 仍满足约束,无需反射。 - 计算实际下降比:
\(f(x^{(1)}+p^{(1)}) \approx 3.625\),\(\rho \approx \frac{4.277-3.625}{4.277-3.625} = 1\),接受点并扩大信赖域至 \(\Delta_2 = 1.125\)。
更新 \(x^{(2)} = (0.5590, 0.2795)\)。
- 构建二次模型:
-
后续迭代与收敛
重复上述过程,迭代点向约束边界 \(x_1 + x_2 = 2\) 靠近。当梯度在可行域内的投影很小时停止。最终解接近最优解 \(x^* = (1.5, 0.5)\),对应 \(f(x^*) = 0.5\)。 -
关键点总结
- 反射步骤仅在试探步违反边界约束时触发,将点映射回可行域。
- 比值 \(\rho\) 决定是否接受试探步和调整信赖域半径:
- \(\rho > 0.75\):扩大半径;
- \(\rho < 0.25\):缩小半径;
- 中间值:保持半径。
- 收敛条件为梯度范数小于容忍误差或信赖域半径过小。
通过以上步骤,信赖域反射算法在保证可行性的同时逐步逼近最优解。