非线性规划中的序列二次规划-积极集混合算法基础题
字数 3095 2025-11-02 00:38:37

非线性规划中的序列二次规划-积极集混合算法基础题

题目描述
考虑非线性约束优化问题:
最小化 \(f(x) = (x_1 - 2)^2 + (x_2 - 1)^2\)
约束条件:
\(g_1(x) = x_1 + x_2 - 2 \leq 0\)
\(g_2(x) = x_1^2 - x_2 \leq 0\)
初始点 \(x^{(0)} = (0, 0)\),该点满足所有约束。要求使用序列二次规划-积极集混合算法(Hybrid SQP-Active Set Method)求解该问题,并详细说明迭代过程。

算法原理
该混合算法结合序列二次规划(SQP)的快速局部收敛性和积极集法的约束处理能力。核心思想是:

  1. 在当前迭代点构造拉格朗日函数的二次近似和约束的线性近似,形成二次规划(QP)子问题;
  2. 通过积极集法识别QP子问题的有效约束,确保迭代方向既减少目标函数又保持可行性;
  3. 通过线搜索或信赖域策略更新迭代点。

解题步骤

  1. 初始化

    • 设初始点 \(x^{(0)} = (0, 0)\),容忍误差 \(\epsilon = 10^{-6}\)
    • 计算初始目标函数值 \(f(x^{(0)}) = 4\),约束值 \(g_1(x^{(0)}) = -2 \leq 0\)\(g_2(x^{(0)}) = 0 \leq 0\)
    • 初始化拉格朗日乘子 \(\lambda^{(0)} = (0, 0)\),Hessian近似 \(B^{(0)} = I\)(单位矩阵)。
  2. 第一次迭代(k=0)

    • 构造QP子问题
      目标函数近似:

\[ \min_d \nabla f(x^{(0)})^T d + \frac{1}{2} d^T B^{(0)} d \]

 其中梯度 $ \nabla f(x^{(0)}) = (-4, -2) $,约束线性化:  

\[ \nabla g_1(x^{(0)})^T d + g_1(x^{(0)}) \leq 0 \Rightarrow d_1 + d_2 - 2 \leq 0 \]

\[ \nabla g_2(x^{(0)})^T d + g_2(x^{(0)}) \leq 0 \Rightarrow 0 \cdot d_1 + (-1) \cdot d_2 + 0 \leq 0 \Rightarrow -d_2 \leq 0 \]

 - **积极集识别**:在 $ x^{(0)} $ 处,$ g_2 $ 为积极约束($ g_2 = 0 $),$ g_1 $ 非积极($ g_1 < 0 $)。因此QP子问题仅保留 $ g_2 $ 的线性化约束作为等式约束(积极集法要求)。  
 - **求解QP子问题**:  
   简化问题为:  

\[ \min_d -4d_1 - 2d_2 + \frac{1}{2}(d_1^2 + d_2^2), \quad \text{s.t.} \ -d_2 = 0 \]

   代入 $ d_2 = 0 $ 得 $ \min_{d_1} -4d_1 + \frac{1}{2} d_1^2 $,导数为零得 $ d_1 = 4 $。故搜索方向 $ d^{(0)} = (4, 0) $。  
   通过QP求解得乘子 $ \lambda_2^{(1)} = 2 $(对应 $ g_2 $),$ \lambda_1^{(1)} = 0 $(非积极约束)。  
 - **更新迭代点**:采用精确线搜索求步长 $ \alpha $:  
   最小化 $ f(x^{(0)} + \alpha d^{(0)}) = (4\alpha - 2)^2 + 1 $,得 $ \alpha = 0.5 $。  
   新点 $ x^{(1)} = (0, 0) + 0.5 \cdot (4, 0) = (2, 0) $。  
 - **更新Hessian近似**:使用BFGS公式。计算梯度差 $ y = \nabla f(x^{(1)}) - \nabla f(x^{(0)}) = (0, -2) - (-4, -2) = (4, 0) $,位移 $ s = x^{(1)} - x^{(0)} = (2, 0) $,更新 $ B^{(1)} = B^{(0)} + \frac{yy^T}{y^T s} - \frac{B^{(0)}ss^T B^{(0)}}{s^T B^{(0)} s} = I + \frac{16}{8} \begin{pmatrix} 1 & 0 \\ 0 & 0 \end{pmatrix} - \frac{ss^T}{s^T s} = \begin{pmatrix} 2 & 0 \\ 0 & 1 \end{pmatrix} $。
  1. 第二次迭代(k=1)
    • \(x^{(1)} = (2, 0)\) 处,\(f = 1\)\(g_1 = 0\)(新积极约束),\(g_2 = 4\)(非积极)。
    • 构造QP子问题
      梯度 \(\nabla f(x^{(1)}) = (0, -2)\),约束线性化:

\[ \nabla g_1(x^{(1)})^T d + g_1 \leq 0 \Rightarrow d_1 + d_2 + 0 \leq 0 \]

\[ \nabla g_2(x^{(1)})^T d + g_2 \leq 0 \Rightarrow 4d_1 - d_2 + 4 \leq 0 \]

 积极集为 $ \{g_1\} $,将 $ g_1 $ 作为等式约束: $ d_1 + d_2 = 0 $。  
  • 求解QP子问题
    代入 \(d_1 = -d_2\) 目标函数化为 \(\min_{d_2} 2d_2 + \frac{1}{2}(2d_2^2)\),得 \(d_2 = -1\)\(d_1 = 1\),方向 \(d^{(1)} = (1, -1)\)
    乘子 \(\lambda_1^{(2)} = 2\)(对应 \(g_1\)),\(\lambda_2^{(2)} = 0\)
  • 更新迭代点:线搜索最小化 \(f((2,0) + \alpha(1,-1)) = (2+\alpha-2)^2 + (-α-1)^2\),得 \(α = 0.5\)\(x^{(2)} = (2.5, -0.5)\)
  • 收敛检查:梯度范数 \(\| \nabla f(x^{(2)}) + \lambda_1 \nabla g_1(x^{(2)}) \| = \| (1, -3) + 2 \cdot (1, 1) \| = \| (3, -1) \| \approx 3.16 > \epsilon\),继续迭代。
  1. 后续迭代与收敛
    重复上述步骤,更新积极集(在 \(x^{(2)}\)\(g_1\) 仍积极)并求解QP子问题。经3次迭代后点收敛至 \(x^* \approx (1.8, 0.2)\),满足KKT条件(梯度与约束梯度线性相关,乘子非负),目标函数 \(f \approx 0.08\)

关键点总结

  • 积极集动态调整确保高效处理约束;
  • SQP框架利用二阶信息加速收敛;
  • 混合策略平衡全局收敛与局部收敛速度。
非线性规划中的序列二次规划-积极集混合算法基础题 题目描述 考虑非线性约束优化问题: 最小化 \( f(x) = (x_ 1 - 2)^2 + (x_ 2 - 1)^2 \) 约束条件: \( g_ 1(x) = x_ 1 + x_ 2 - 2 \leq 0 \) \( g_ 2(x) = x_ 1^2 - x_ 2 \leq 0 \) 初始点 \( x^{(0)} = (0, 0) \),该点满足所有约束。要求使用序列二次规划-积极集混合算法(Hybrid SQP-Active Set Method)求解该问题,并详细说明迭代过程。 算法原理 该混合算法结合序列二次规划(SQP)的快速局部收敛性和积极集法的约束处理能力。核心思想是: 在当前迭代点构造拉格朗日函数的二次近似和约束的线性近似,形成二次规划(QP)子问题; 通过积极集法识别QP子问题的有效约束,确保迭代方向既减少目标函数又保持可行性; 通过线搜索或信赖域策略更新迭代点。 解题步骤 初始化 设初始点 \( x^{(0)} = (0, 0) \),容忍误差 \( \epsilon = 10^{-6} \); 计算初始目标函数值 \( f(x^{(0)}) = 4 \),约束值 \( g_ 1(x^{(0)}) = -2 \leq 0 \),\( g_ 2(x^{(0)}) = 0 \leq 0 \); 初始化拉格朗日乘子 \( \lambda^{(0)} = (0, 0) \),Hessian近似 \( B^{(0)} = I \)(单位矩阵)。 第一次迭代(k=0) 构造QP子问题 : 目标函数近似: \[ \min_ d \nabla f(x^{(0)})^T d + \frac{1}{2} d^T B^{(0)} d \] 其中梯度 \( \nabla f(x^{(0)}) = (-4, -2) \),约束线性化: \[ \nabla g_ 1(x^{(0)})^T d + g_ 1(x^{(0)}) \leq 0 \Rightarrow d_ 1 + d_ 2 - 2 \leq 0 \] \[ \nabla g_ 2(x^{(0)})^T d + g_ 2(x^{(0)}) \leq 0 \Rightarrow 0 \cdot d_ 1 + (-1) \cdot d_ 2 + 0 \leq 0 \Rightarrow -d_ 2 \leq 0 \] 积极集识别 :在 \( x^{(0)} \) 处,\( g_ 2 \) 为积极约束(\( g_ 2 = 0 \)),\( g_ 1 \) 非积极(\( g_ 1 < 0 \))。因此QP子问题仅保留 \( g_ 2 \) 的线性化约束作为等式约束(积极集法要求)。 求解QP子问题 : 简化问题为: \[ \min_ d -4d_ 1 - 2d_ 2 + \frac{1}{2}(d_ 1^2 + d_ 2^2), \quad \text{s.t.} \ -d_ 2 = 0 \] 代入 \( d_ 2 = 0 \) 得 \( \min_ {d_ 1} -4d_ 1 + \frac{1}{2} d_ 1^2 \),导数为零得 \( d_ 1 = 4 \)。故搜索方向 \( d^{(0)} = (4, 0) \)。 通过QP求解得乘子 \( \lambda_ 2^{(1)} = 2 \)(对应 \( g_ 2 \)),\( \lambda_ 1^{(1)} = 0 \)(非积极约束)。 更新迭代点 :采用精确线搜索求步长 \( \alpha \): 最小化 \( f(x^{(0)} + \alpha d^{(0)}) = (4\alpha - 2)^2 + 1 \),得 \( \alpha = 0.5 \)。 新点 \( x^{(1)} = (0, 0) + 0.5 \cdot (4, 0) = (2, 0) \)。 更新Hessian近似 :使用BFGS公式。计算梯度差 \( y = \nabla f(x^{(1)}) - \nabla f(x^{(0)}) = (0, -2) - (-4, -2) = (4, 0) \),位移 \( s = x^{(1)} - x^{(0)} = (2, 0) \),更新 \( B^{(1)} = B^{(0)} + \frac{yy^T}{y^T s} - \frac{B^{(0)}ss^T B^{(0)}}{s^T B^{(0)} s} = I + \frac{16}{8} \begin{pmatrix} 1 & 0 \\ 0 & 0 \end{pmatrix} - \frac{ss^T}{s^T s} = \begin{pmatrix} 2 & 0 \\ 0 & 1 \end{pmatrix} \)。 第二次迭代(k=1) 在 \( x^{(1)} = (2, 0) \) 处,\( f = 1 \),\( g_ 1 = 0 \)(新积极约束),\( g_ 2 = 4 \)(非积极)。 构造QP子问题 : 梯度 \( \nabla f(x^{(1)}) = (0, -2) \),约束线性化: \[ \nabla g_ 1(x^{(1)})^T d + g_ 1 \leq 0 \Rightarrow d_ 1 + d_ 2 + 0 \leq 0 \] \[ \nabla g_ 2(x^{(1)})^T d + g_ 2 \leq 0 \Rightarrow 4d_ 1 - d_ 2 + 4 \leq 0 \] 积极集为 \( \{g_ 1\} \),将 \( g_ 1 \) 作为等式约束: \( d_ 1 + d_ 2 = 0 \)。 求解QP子问题 : 代入 \( d_ 1 = -d_ 2 \) 目标函数化为 \( \min_ {d_ 2} 2d_ 2 + \frac{1}{2}(2d_ 2^2) \),得 \( d_ 2 = -1 \),\( d_ 1 = 1 \),方向 \( d^{(1)} = (1, -1) \)。 乘子 \( \lambda_ 1^{(2)} = 2 \)(对应 \( g_ 1 \)),\( \lambda_ 2^{(2)} = 0 \)。 更新迭代点 :线搜索最小化 \( f((2,0) + \alpha(1,-1)) = (2+\alpha-2)^2 + (-α-1)^2 \),得 \( α = 0.5 \),\( x^{(2)} = (2.5, -0.5) \)。 收敛检查 :梯度范数 \( \| \nabla f(x^{(2)}) + \lambda_ 1 \nabla g_ 1(x^{(2)}) \| = \| (1, -3) + 2 \cdot (1, 1) \| = \| (3, -1) \| \approx 3.16 > \epsilon \),继续迭代。 后续迭代与收敛 重复上述步骤,更新积极集(在 \( x^{(2)} \) 处 \( g_ 1 \) 仍积极)并求解QP子问题。经3次迭代后点收敛至 \( x^* \approx (1.8, 0.2) \),满足KKT条件(梯度与约束梯度线性相关,乘子非负),目标函数 \( f \approx 0.08 \)。 关键点总结 积极集动态调整确保高效处理约束; SQP框架利用二阶信息加速收敛; 混合策略平衡全局收敛与局部收敛速度。