非线性规划中的自适应信赖域方法基础题
题目描述:
考虑非线性规划问题:
最小化 \(f(x) = (x_1 - 1)^2 + (x_2 - 2.5)^2\)
满足约束 \(g_1(x) = x_1 - 2x_2 + 2 \geq 0\),\(g_2(x) = -x_1 - 2x_2 + 6 \geq 0\),\(g_3(x) = -x_1 + 2x_2 + 2 \geq 0\),
其中 \(x = (x_1, x_2) \in \mathbb{R}^2\)。
要求使用自适应信赖域方法求解该问题,初始点设为 \(x_0 = (2, 0)\),初始信赖域半径 \(\Delta_0 = 0.5\),参数 \(\eta = 0.1\)(用于判断步长接受性),自适应调整系数 \(\beta_1 = 0.5\),\(\beta_2 = 2.0\)。
解题过程:
1. 方法原理简介
自适应信赖域方法通过动态调整信赖域半径 \(\Delta_k\),在每一步构造一个局部模型(通常为二次近似)来逼近目标函数,并在信赖域内求解该模型的极小值。其核心思想是:
- 若模型预测的下降量与实际下降量吻合良好,则扩大信赖域半径以加速收敛;
- 若吻合较差,则缩小半径以提高模型准确性。
自适应机制通过参数 \(\beta_1, \beta_2\) 调整半径,避免依赖固定阈值。
2. 步骤详解
步骤 1:初始化
设置初始点 \(x_0 = (2, 0)\),初始半径 \(\Delta_0 = 0.5\),迭代计数器 \(k = 0\)。计算初始函数值 \(f(x_0) = (2-1)^2 + (0-2.5)^2 = 1 + 6.25 = 7.25\),梯度 \(\nabla f(x_0) = (2(x_1-1), 2(x_2-2.5)) = (2, -5)\),Hessian 矩阵 \(H_0 = \nabla^2 f(x_0) = \begin{bmatrix} 2 & 0 \\ 0 & 2 \end{bmatrix}\)(常数矩阵)。
步骤 2:构造局部二次模型
在当前点 \(x_k\),建立近似模型:
\[m_k(p) = f(x_k) + \nabla f(x_k)^T p + \frac{1}{2} p^T H_k p, \]
其中 \(p\) 为步长,且满足约束 \(\|p\| \leq \Delta_k\)(这里采用欧几里得范数)。本例中约束为线性不等式,需在求解子问题时结合信赖域约束。
步骤 3:求解信赖域子问题
需求解:
\[\min_p m_k(p) \quad \text{s.t.} \quad \|p\| \leq \Delta_k,\ g_i(x_k + p) \geq 0 \ (i=1,2,3). \]
由于约束为线性,可将其与信赖域约束合并为可行域。
- 在 \(x_0 = (2,0)\) 处,约束条件为:
\(g_1 = 2 - 0 + 2 = 4 \geq 0\)(满足),
\(g_2 = -2 - 0 + 6 = 4 \geq 0\)(满足),
\(g_3 = -2 + 0 + 2 = 0\)(临界满足)。
因此需确保步长 \(p\) 满足 \(g_3(x_0 + p) = -(2+p_1) + 2(0+p_2) + 2 \geq 0\),即 \(-p_1 + 2p_2 \geq 0\)。
子问题变为:
\[ \min_p 7.25 + [2, -5] p + \frac{1}{2} p^T \begin{bmatrix} 2 & 0 \\ 0 & 2 \end{bmatrix} p \quad \text{s.t.} \quad \|p\| \leq 0.5,\ -p_1 + 2p_2 \geq 0. \]
简化目标函数:\(m_0(p) = 7.25 + 2p_1 - 5p_2 + p_1^2 + p_2^2\)。
由于信赖域半径较小(0.5),可近似忽略约束 \(-p_1 + 2p_2 \geq 0\) 的影响(因初始点已满足该约束为等式,且半径内移动可能仍满足)。通过数值方法(如折线法或凸优化求解器)得近似解 \(p_0 \approx (0.2, 0.4)\)(需验证约束:\(-0.2 + 2 \times 0.4 = 0.6 \geq 0\),且 \(\|p\| \approx 0.447 \leq 0.5\))。
步骤 4:计算实际下降与预测下降
- 实际下降:\(\text{ared}_k = f(x_k) - f(x_k + p_k)\)。
计算 \(x_1 = x_0 + p_0 = (2.2, 0.4)\),\(f(x_1) = (1.2)^2 + (-2.1)^2 = 1.44 + 4.41 = 5.85\),
故 \(\text{ared}_0 = 7.25 - 5.85 = 1.40\)。 - 预测下降:\(\text{pred}_k = m_k(0) - m_k(p_k) = -[\nabla f(x_k)^T p_k + \frac{1}{2} p_k^T H_k p_k]\)。
代入 \(p_0 = (0.2, 0.4)\):
\(\nabla f(x_0)^T p_0 = 2 \times 0.2 + (-5) \times 0.4 = 0.4 - 2.0 = -1.6\),
\(p_0^T H_0 p_0 = 0.2^2 \times 2 + 0.4^2 \times 2 = 0.08 + 0.32 = 0.4\),
故 \(\text{pred}_0 = -[-1.6 + 0.5 \times 0.4] = 1.6 - 0.2 = 1.40\)。
步骤 5:计算比率并调整信赖域半径
比率 \(\rho_k = \frac{\text{ared}_k}{\text{pred}_k} = 1.40 / 1.40 = 1.0\)。
自适应规则:
- 若 \(\rho_k > \eta\)(此处 \(\eta = 0.1\)),接受步长 \(x_{k+1} = x_k + p_k\)。
- 调整半径:
- 若 \(\rho_k < 0.25\),则 \(\Delta_{k+1} = \beta_1 \Delta_k\)(缩小);
- 若 \(\rho_k > 0.75\),则 \(\Delta_{k+1} = \beta_2 \Delta_k\)(扩大);
- 否则保持 \(\Delta_{k+1} = \Delta_k\)。
本例中 \(\rho_0 = 1.0 > 0.75\),故 \(\Delta_1 = \beta_2 \Delta_0 = 2.0 \times 0.5 = 1.0\)。
步骤 6:迭代与终止
令 \(k = 1\),重复步骤 2-5,直至满足收敛条件(如梯度范数小于阈值或半径过小)。
- 在 \(x_1 = (2.2, 0.4)\) 处,梯度 \(\nabla f(x_1) = (2.4, -4.2)\),继续求解子问题。
最终逼近最优解 \(x^* \approx (1.4, 1.7)\)(通过解析法验证:无约束最优解为 \((1, 2.5)\),但受约束 \(g_3\) 限制,在交点处得解)。
3. 关键点总结
- 自适应机制通过 \(\rho_k\) 动态调整半径,避免手动设定固定阈值。
- 子问题需综合处理信赖域约束和问题本身的约束。
- 该方法在非凸或约束复杂时仍具稳定性。