逐步凸近似信赖域反射混合算法基础题
题目描述:
考虑以下非线性规划问题:
最小化目标函数 \(f(x) = (x_1 - 3)^4 + (x_2 - 2)^2 + e^{x_1 + x_2}\)
约束条件为:
- \(g_1(x) = x_1^2 + x_2^2 - 5 \leq 0\)
- \(g_2(x) = x_1 - x_2^2 - 1 \leq 0\)
- \(-2 \leq x_1 \leq 5\)
- \(-3 \leq x_2 \leq 4\)
初始点 \(x^{(0)} = (1, 1)\),信赖域初始半径 \(\Delta_0 = 1\),凸近似控制参数 \(\beta = 0.5\),信赖域半径更新参数 \(\eta = 0.25\),收敛容差 \(\epsilon = 10^{-4}\)。
解题过程:
步骤1:理解算法框架
逐步凸近似信赖域反射混合算法结合了两种思想:
- 逐步凸近似:在每步迭代,用凸函数(如线性化或二次凸模型)近似非凸目标/约束,使子问题易解。
- 信赖域反射:在信赖域内求解子问题,并用反射技巧处理约束(特别是不等式约束),确保迭代点可行或逼近可行域。
本算法流程为:在迭代点 \(x^{(k)}\) 处,构造凸近似子问题,在信赖域 \(\|d\| \leq \Delta_k\) 内求解子问题得试探步 \(d_k\),计算实际下降与预估下降比,根据比值更新信赖域半径,并决定是否接受该步。
步骤2:构造凸近似子问题
在点 \(x^{(k)} = (x_1^{(k)}, x_2^{(k)})\),对目标函数和约束进行凸近似:
- 目标函数 \(f(x)\) 非凸(含 \(e^{x_1+x_2}\) 和四次项),采用一阶泰勒展开构造凸近似:
\[ \tilde{f}^{(k)}(d) = f(x^{(k)}) + \nabla f(x^{(k)})^T d \]
其中梯度 \(\nabla f(x) = [4(x_1-3)^3 + e^{x_1+x_2}, 2(x_2-2) + e^{x_1+x_2}]\)。
- 约束 \(g_1(x)\) 为凸(二次凸函数),无需近似,直接保留:
\[ \tilde{g}_1^{(k)}(d) = g_1(x^{(k)} + d) = (x_1^{(k)}+d_1)^2 + (x_2^{(k)}+d_2)^2 - 5 \leq 0 \]
- 约束 \(g_2(x)\) 非凸(因 \(-x_2^2\) 凹),将其线性化:
\[ \tilde{g}_2^{(k)}(d) = g_2(x^{(k)}) + \nabla g_2(x^{(k)})^T d \leq 0 \]
其中 \(\nabla g_2(x) = [1, -2x_2]\)。
- 边界约束直接施加于 \(x^{(k)} + d\)。
步骤3:求解信赖域子问题
在信赖域 \(\|d\| \leq \Delta_k\) 内求解凸近似子问题:
\[\begin{aligned} \min_{d} & \quad \tilde{f}^{(k)}(d) \\ \text{s.t.} & \quad \tilde{g}_1^{(k)}(d) \leq 0, \\ & \quad \tilde{g}_2^{(k)}(d) \leq 0, \\ & \quad -2 \leq x_1^{(k)} + d_1 \leq 5, \\ & \quad -3 \leq x_2^{(k)} + d_2 \leq 4, \\ & \quad \|d\| \leq \Delta_k. \end{aligned} \]
由于子问题是凸约束的线性目标问题,可用信赖域内的梯度投影或内点法求解。这里采用简单思路:在信赖域内最小化线性目标,同时满足凸约束。
步骤4:计算实际下降与预估下降比
定义实际下降 \(\text{Ared}_k = f(x^{(k)}) - f(x^{(k)} + d_k)\),预估下降 \(\text{Pred}_k = \tilde{f}^{(k)}(0) - \tilde{f}^{(k)}(d_k) = -\nabla f(x^{(k)})^T d_k\)。
计算比值 \(\rho_k = \frac{\text{Ared}_k}{\text{Pred}_k}\)。
步骤5:更新信赖域半径和迭代点
- 若 \(\rho_k < \eta\)(实际改进差),拒绝步长,缩小信赖域:\(\Delta_{k+1} = \beta \Delta_k\)。
- 若 \(\rho_k \geq \eta\),接受步长:\(x^{(k+1)} = x^{(k)} + d_k\)。
- 若 \(\rho_k\) 接近1(例如 \(\rho_k > 0.75\)),扩大信赖域:\(\Delta_{k+1} = \min(2\Delta_k, \Delta_{\max})\)。
- 否则保持信赖域:\(\Delta_{k+1} = \Delta_k\)。
通常设 \(\Delta_{\max} = 5\)。
步骤6:检查收敛
若 \(\|d_k\| < \epsilon\) 且约束违反度很小,则停止;否则返回步骤2。
实例演算(第一次迭代):
-
初始点 \(x^{(0)} = (1,1)\),计算:
- \(f(x^{(0)}) = (1-3)^4 + (1-2)^2 + e^{2} = 16 + 1 + 7.389 \approx 24.389\)。
- 梯度 \(\nabla f(x^{(0)}) = [4(1-3)^3 + e^2, 2(1-2) + e^2] = [-32+7.389, -2+7.389] = [-24.611, 5.389]\)。
- 约束值 \(g_1 = 1+1-5=-3 \leq 0\),\(g_2 = 1-1-1=-1 \leq 0\),初始点可行。
-
构造凸近似子问题:
- 目标近似:\(\tilde{f}^{(0)}(d) = 24.389 + [-24.611, 5.389]^T d\)。
- 约束 \(\tilde{g}_1^{(0)}(d) = (1+d_1)^2 + (1+d_2)^2 - 5 \leq 0\)。
- 约束 \(\tilde{g}_2^{(0)}(d) = -1 + [1, -2]^T d \leq 0\)(因 \(\nabla g_2(1,1)=[1,-2]\))。
- 边界约束:\(-2 \leq 1+d_1 \leq 5\),\(-3 \leq 1+d_2 \leq 4\)。
- 信赖域:\(\|d\| \leq 1\)。
-
求解子问题:需在线性目标下最小化,受凸二次约束和球约束。由于梯度方向为下降方向,可沿负梯度方向在约束内搜索。粗略估计,考虑满足信赖域的最速下降方向:\(d = -\alpha \nabla f(x^{(0)})\),取 \(\alpha\) 使 \(\|d\|=1\) 且满足约束。计算得 \(\nabla f\) 范数 ≈ 25.2,故 \(\alpha \approx 0.04\),\(d \approx (0.984, -0.216)\)。但需严格解凸子问题,这里假设求解得 \(d_0 = (0.8, -0.1)\)(示例值)。
-
计算比值:\(f(x^{(0)}+d_0) = f(1.8,0.9) \approx (1.8-3)^4 + (0.9-2)^2 + e^{2.7} \approx 2.0736 + 1.21 + 14.879 \approx 18.163\),\(\text{Ared} = 24.389 - 18.163 = 6.226\),\(\text{Pred} = -[-24.611,5.389]^T [0.8,-0.1] = 19.689 - 0.539 = 19.15\),\(\rho = 6.226/19.15 \approx 0.325 > \eta=0.25\)。
-
接受步长:\(x^{(1)} = (1.8, 0.9)\),因 \(\rho \in [0.25,0.75)\),保持信赖域 \(\Delta_1 = 1\)。
-
检查收敛:\(\|d_0\| \approx 0.806 > \epsilon\),继续迭代。
总结:该算法通过逐步凸近似将非凸问题转化为凸子问题,结合信赖域控制步长,反射处理约束,可稳定收敛至局部最优。实际应用中需有效解凸子问题,并调整参数平衡近似精度与计算效率。