非线性规划中的信赖域反射-序列二次规划混合算法基础题
题目描述
考虑非线性规划问题:
\[\min f(x) = (x_1 - 1)^2 + (x_2 - 2)^2 + (x_3 - 3)^2 \]
约束条件为:
\[g_1(x) = x_1 + x_2 + x_3 - 6 \leq 0, \quad g_2(x) = -x_1 \leq 0, \quad g_3(x) = -x_2 \leq 0, \quad g_4(x) = -x_3 \leq 0. \]
初始点 \(x^{(0)} = (0, 0, 0)\),信赖域半径初始值 \(\Delta_0 = 0.5\)。要求使用信赖域反射-序列二次规划混合算法迭代两步,并说明每一步的更新逻辑。
解题过程
步骤1:算法背景与混合策略
信赖域反射(Trust Region Reflective, TRR)方法通过动态调整信赖域半径保证收敛性,而序列二次规划(SQP)通过求解二次子问题逼近原问题。混合算法的核心思想:
- 在每次迭代中,用SQP生成候选步长 \(s_k\);
- 用TRR框架判断是否接受该步长,并调整信赖域半径 \(\Delta_k\)。
步骤2:第一次迭代(k=0)
初始点:\(x^{(0)} = (0,0,0)\),\(\Delta_0 = 0.5\)。
2.1 计算梯度与Hessian
目标函数梯度:
\[\nabla f(x) = [2(x_1-1), 2(x_2-2), 2(x_3-3)]^T \Rightarrow \nabla f(x^{(0)}) = [-2, -4, -6]^T. \]
Hessian矩阵(常数):
\[H = \nabla^2 f(x) = \begin{bmatrix} 2 & 0 & 0 \\ 0 & 2 & 0 \\ 0 & 0 & 2 \end{bmatrix}. \]
约束梯度:
\[\nabla g_1 = [1,1,1]^T, \quad \nabla g_2 = [-1,0,0]^T, \quad \nabla g_3 = [0,-1,0]^T, \quad \nabla g_4 = [0,0,-1]^T. \]
2.2 构建SQP子问题
在 \(x^{(0)}\) 处,积极约束为 \(g_2, g_3, g_4\)(边界约束激活)。子问题为:
\[\min_s \frac{1}{2} s^T H s + \nabla f(x^{(0)})^T s, \quad \text{s.t.} \quad \|s\| \leq \Delta_0, \quad s \geq 0 \ (\text{因边界约束激活}). \]
由于 \(H\) 正定,子问题等价于投影梯度问题。但需满足信赖域约束 \(\|s\| \leq 0.5\) 和 \(s \geq 0\)。
2.3 求解子问题
忽略边界约束,无约束解为 \(s_{\text{uc}} = -H^{-1} \nabla f = [1,2,3]^T\),但 \(\|s_{\text{uc}}\| \approx 3.74 > \Delta_0\)。
考虑边界约束 \(s \geq 0\) 和信赖域约束,需截断。简单做法:沿投影梯度方向 \(d = -\nabla f = [2,4,6]^T\) 缩放至信赖域内:
\[s^{(0)} = \frac{\Delta_0}{\|d\|} d = \frac{0.5}{\sqrt{56}} [2,4,6]^T \approx [0.134, 0.267, 0.401]^T. \]
此步满足 \(s \geq 0\) 和 \(\|s\| = 0.5\)。
2.4 计算实际下降与预测下降
实际下降:
\[\text{ared} = f(x^{(0)}) - f(x^{(0)}+s^{(0)}) = 14 - \left[(0.134-1)^2 + (0.267-2)^2 + (0.401-3)^2\right] \approx 14 - 11.23 = 2.77. \]
预测下降(基于二次模型):
\[\text{pred} = -\left( \frac{1}{2} s^{(0)T} H s^{(0)} + \nabla f^T s^{(0)} \right) = -\left( \frac{1}{2} \cdot 0.5^2 \cdot 2 + [2,4,6] \cdot s^{(0)} \right) \approx - (0.25 + 4.81) = -5.06. \]
比值 \(\rho = \frac{\text{ared}}{\text{pred}} \approx \frac{2.77}{5.06} \approx 0.55\)。
2.5 更新信赖域半径与迭代点
阈值 \(\eta = 0.25\):
- 若 \(\rho < \eta\),拒绝步长,缩小信赖域(\(\Delta_{k+1} = 0.5 \Delta_k\));
- 若 \(\rho \geq \eta\),接受步长(\(x^{(k+1)} = x^{(k)} + s^{(k)}\)),并根据 \(\rho\) 调整 \(\Delta_{k+1}\)。
此处 \(\rho > 0.25\),接受步长:
\[x^{(1)} = x^{(0)} + s^{(0)} \approx (0.134, 0.267, 0.401). \]
调整 \(\Delta\):若 \(\rho > 0.75\),则扩大信赖域(\(\Delta_{k+1} = 2\Delta_k\));否则保持。此处 \(\Delta_1 = \Delta_0 = 0.5\)。
步骤3:第二次迭代(k=1)
当前点:\(x^{(1)} \approx (0.134, 0.267, 0.401)\),\(\Delta_1 = 0.5\)。
3.1 计算梯度与约束
\[\nabla f(x^{(1)}) \approx [2(0.134-1), 2(0.267-2), 2(0.401-3)]^T \approx [-1.732, -3.466, -5.198]^T. \]
约束情况:\(g_1 \approx -4.198 \leq 0\)(非积极),\(g_2, g_3, g_4\) 仍积极(因 \(x^{(1)} > 0\))。
3.2 构建SQP子问题
子问题与第一次类似,但梯度变化。方向 \(d = -\nabla f \approx [1.732, 3.466, 5.198]^T\),缩放至信赖域:
\[s^{(1)} = \frac{0.5}{\sqrt{1.732^2 + 3.466^2 + 5.198^2}} d \approx \frac{0.5}{6.481} d \approx [0.134, 0.267, 0.401]^T. \]
(注:由于梯度方向未变,步长与第一次相同。)
3.3 计算实际下降与预测下降
实际下降:
\[\text{ared} \approx f(x^{(1)}) - f(x^{(1)}+s^{(1)}) = 11.23 - 8.46 \approx 2.77. \]
预测下降:
\[\text{pred} \approx -\left( \frac{1}{2} \cdot 0.5^2 \cdot 2 + [1.732, 3.466, 5.198] \cdot s^{(1)} \right) \approx - (0.25 + 4.81) = -5.06. \]
比值 \(\rho \approx 0.55\)。
3.4 更新迭代点与信赖域
接受步长:
\[x^{(2)} = x^{(1)} + s^{(1)} \approx (0.268, 0.534, 0.802). \]
\(\Delta_2 = \Delta_1 = 0.5\)(因 \(\rho \in [0.25, 0.75]\))。
结论
经过两次迭代,点从 \((0,0,0)\) 移动到 \((0.268, 0.534, 0.802)\),目标函数值从14降至约8.46。混合算法通过SQP子问题生成方向,并用TRR机制控制步长,保证稳定收敛。