非线性规划中的序列二次约束二次规划(SQCQP)算法进阶题
题目描述
考虑非线性规划问题:
最小化 \(f(x)\)
满足约束 \(g_i(x) \leq 0, \quad i = 1, \dots, m\),
其中 \(f\) 和 \(g_i\) 是光滑但可能非凸的函数。序列二次约束二次规划(SQCQP)通过迭代求解一系列二次约束二次规划(QCQP)子问题来逼近原问题。每个子问题在当前点 \(x_k\) 构造,目标函数为二次近似,约束为线性或二次近似。要求设计一个SQCQP算法,处理非凸约束时能保证收敛,并分析其超线性收敛条件。
解题过程
- 子问题构造
- 在第 \(k\) 次迭代中,在当前点 \(x_k\) 构造子问题。目标函数用二阶泰勒展开近似:
\[ \tilde{f}_k(d) = f(x_k) + \nabla f(x_k)^T d + \frac{1}{2} d^T B_k d, \]
其中 $ d = x - x_k $,$ B_k $ 是Hessian $ \nabla^2 f(x_k) $ 或其拟牛顿近似(如BFGS矩阵)。
- 对于约束 \(g_i(x) \leq 0\),若 \(g_i\) 非凸,采用二次近似(保留曲率信息):
\[ \tilde{g}_i(d) = g_i(x_k) + \nabla g_i(x_k)^T d + \frac{1}{2} d^T \nabla^2 g_i(x_k) d \leq 0. \]
若 $ g_i $ 凸,可简化为线性近似 $ g_i(x_k) + \nabla g_i(x_k)^T d \leq 0 $ 以降低计算成本。
- 子问题是一个QCQP:
\[ \min_d \tilde{f}_k(d) \quad \text{s.t.} \quad \tilde{g}_i(d) \leq 0, \quad i=1,\dots,m. \]
- 可行性保持机制
- 非凸二次约束可能导致子问题不可行。为此,引入松弛变量 \(s \geq 0\) 或信赖域约束 \(\|d\| \leq \Delta_k\)。
- 例如,添加信赖域约束 \(\|d\|_\infty \leq \Delta_k\),其中半径 \(\Delta_k\) 根据迭代效果自适应调整(类似信赖域方法)。
- 子问题变为:
\[ \min_{d, s} \tilde{f}_k(d) + \mu s \quad \text{s.t.} \quad \tilde{g}_i(d) \leq s, \ s \geq 0, \ \|d\| \leq \Delta_k, \]
其中 $ \mu > 0 $ 是惩罚参数,$ s $ 松弛约束违反度。
-
子问题求解与步长接受
- 使用QCQP求解器(如内点法)解子问题,得到步长 \(d_k\)。
- 计算实际下降量 \(\text{ared} = f(x_k) - f(x_k + d_k)\) 和预测下降量 \(\text{pred} = \tilde{f}_k(0) - \tilde{f}_k(d_k)\)。
- 定义比值 \(\rho_k = \frac{\text{ared}}{\text{pred}}\)。若 \(\rho_k > \eta\)(如 \(\eta = 0.01\)),接受步长 \(x_{k+1} = x_k + d_k\);否则拒绝步长并缩小信赖域半径 \(\Delta_k\)。
-
收敛性分析
- 超线性收敛需满足:
- Hessian近似 \(B_k\) 超线性逼近真Hessian(如通过BFGS更新)。
- 约束近似误差在解点附近快速衰减,即 \(\|\nabla^2 g_i(x_k) - \nabla^2 g_i(x^*)\| \to 0\)。
- 严格互补性条件成立(在解点 \(x^*\),积极约束的梯度线性无关,且拉格朗日乘子非零)。
- 在适当条件下,算法局部收敛速度为超线性。
- 超线性收敛需满足:
-
算法流程总结
- 输入:初始点 \(x_0\),初始半径 \(\Delta_0 > 0\),参数 \(\eta \in (0,1)\)。
- 循环直到收敛:
- 构造QCQP子问题(含信赖域约束)。
- 求解子问题得 \(d_k\)。
- 计算比值 \(\rho_k\),按规则接受/拒绝步长并调整 \(\Delta_k\)。
- 更新 \(B_k\)(拟牛顿法)。
- 输出:近似解 \(x_k\)。
关键点:SQCQP通过高阶近似约束处理非凸性,结合信赖域机制保证稳定性,其超线性收敛依赖于Hessian近似精度和约束规范性条件。