逐步凸近似信赖域反射混合算法基础题
字数 3763 2025-12-05 13:25:21

逐步凸近似信赖域反射混合算法基础题

题目描述
考虑以下非线性规划问题:
最小化目标函数 \(f(x) = (x_1 - 3)^4 + (x_2 - 2)^2 + e^{x_1 + x_2}\)
约束条件为:

  1. \(g_1(x) = x_1^2 + x_2^2 - 5 \leq 0\)
  2. \(g_2(x) = x_1 - x_2^2 - 1 \leq 0\)
  3. \(-2 \leq x_1 \leq 5\)
  4. \(-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。

实例演算(第一次迭代)

  1. 初始点 \(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\),初始点可行。
  2. 构造凸近似子问题:

    • 目标近似:\(\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\)
  3. 求解子问题:需在线性目标下最小化,受凸二次约束和球约束。由于梯度方向为下降方向,可沿负梯度方向在约束内搜索。粗略估计,考虑满足信赖域的最速下降方向:\(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)\)(示例值)。

  4. 计算比值:\(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\)

  5. 接受步长:\(x^{(1)} = (1.8, 0.9)\),因 \(\rho \in [0.25,0.75)\),保持信赖域 \(\Delta_1 = 1\)

  6. 检查收敛:\(\|d_0\| \approx 0.806 > \epsilon\),继续迭代。

总结:该算法通过逐步凸近似将非凸问题转化为凸子问题,结合信赖域控制步长,反射处理约束,可稳定收敛至局部最优。实际应用中需有效解凸子问题,并调整参数平衡近似精度与计算效率。

逐步凸近似信赖域反射混合算法基础题 题目描述 : 考虑以下非线性规划问题: 最小化目标函数 \( 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 \),继续迭代。 总结 :该算法通过逐步凸近似将非凸问题转化为凸子问题,结合信赖域控制步长,反射处理约束,可稳定收敛至局部最优。实际应用中需有效解凸子问题,并调整参数平衡近似精度与计算效率。