1 序列二次规划(SQP)基本概念

1.1 优化问题形式:目标与约束

序列二次规划用于求解带约束的非线性优化问题。通常考虑如下形式:在决策变量 \(x\) 上最小化目标函数 \(f(x)\),同时满足等式约束 \(c(x)=0\) 与不等式约束 \(g(x)\le 0\)。该类问题的关键难点在于:可行域由非线性约束界定,目标函数在约束限制下呈现复杂的局部几何结构,因此需要同时处理“朝向更好目标”和“保持满足约束”。

1.2 SQP 的核心迭代框架

SQP 属于迭代型方法。给定当前迭代点 \(x_k\),算法会构造一个二次规划(QP)子问题,使其在 \(x_k\) 附近近似原问题。子问题通常由两部分构成: 1) 目标函数使用二阶信息(或准二阶近似)在局部展开; 2) 约束使用线性化(或一阶近似)替代原约束的非线性。

求解该 QP 子问题可得到搜索方向 \(d_k\) 以及步长或更新方式,从而生成下一点 \(x_{k+1}\)。迭代不断重复“近似—求解—更新”的过程。

1.3 QP 子问题与原问题的近似关系

SQP 的近似并不等同于“把原问题改写成可直接求解的形式”,而是利用局部信息建立一个“在当前点附近足够贴近”的子问题。一般而言:

  • 目标函数的二阶/准二阶模型刻画了曲率,从而决定搜索方向在局部是否更可能朝向更优区域;
  • 约束的线性模型用于预测在当前方向上约束是否会变得更接近可行。

当迭代点逐渐靠近满足一阶与二阶最优性的解时,该近似模型的质量提升,从而形成较强的收敛性

2 数学建模与二次近似

2.1 目标函数的二阶泰勒/准二阶展开

在当前点 \(x_k\) 附近,目标函数可写成二阶泰勒展开形式的近似: \[ f(x_k+d)\approx f(x_k)+\nabla f(x_k)^\top d+\frac12 d^\top \nabla^2 f(x_k)d. \] 实际实现中往往不直接使用真实 Hessian,而采用准二阶策略:用某个对 Hessian 的近似矩阵 \(B_k\) 替代 \(\nabla^2 f(x_k)\),从而得到 \[ f(x_k+d)\approx f(x_k)+\nabla f(x_k)^\top d+\frac12 d^\top B_k d. \] 准二阶的动机在于降低计算成本、缓解大规模问题中 Hessian 的显式构造压力,同时保持局部曲率信息对搜索方向的指导作用

2.2 约束的线性化(活动约束视角)

等式约束 \(c(x)=0\) 与不等式约束 \(g(x)\le 0\) 在 \(x_k\) 附近常用一阶近似:

  • 等式:\(c(x_k+d)\approx c(x_k)+\nabla c(x_k)^\top d\)
  • 不等式:\(g(x_k+d)\approx g(x_k)+\nabla g(x_k)^\top d\)

在许多算法实现中,还会结合“活动约束”的概念:即在最优解处满足 \(g_i(x)=0\) 的约束,其局部行为对可行性与拉格朗日乘子更具决定性。虽然 SQP 的模型通常对所有约束统一线性化,但实际求解与全局化往往会更关注可能成为主导的约束子集

2.3 拉格朗日乘子与 KKT 条件

约束优化局部最优性可通过 KKT(Karush–Kuhn–Tucker)条件刻画。对于拉格朗日函数 \[ \mathcal{L}(x,\lambda,\mu)=f(x)+\lambda^\top c(x)+\mu^\top g(x), \] KKT 条件包含:

  • 驻点性:\(\nabla_x \mathcal{L}(x,\lambda,\mu)=0\)
  • 原始可行性:\(c(x)=0\),\(g(x)\le 0\)
  • 对偶可行性:\(\mu\ge 0\)
  • 互补松弛:\(\mu_i g_i(x)=0\)

SQP 的一个重要目标是:在迭代过程中逐步逼近满足这些条件的点。QP 子问题的结构与乘子更新(或估计)与 KKT 系统之间存在内在联系,使得该方法能够自然嵌入“逼近驻点与可行性”的框架。

2.4 近似 Hessian 的构造:从真实到准牛顿

SQP 中对 Hessian 的近似常围绕两类思路: 1) 使用真实二阶信息:当计算代价可接受且问题规模较小。 2) 准牛顿更新:例如基于梯度变化构造 \(B_k\),使其满足某种“曲率一致性”。常见原则是在迭代过程中保持 \(B_k\) 对搜索方向有良好几何意义,如尽可能维持正定性或在需要时进行修正,以保证 QP 子问题更易求解且步长更可靠。

工程角度看,Hessian 近似策略往往比“形式上写出二阶项”更重要:它直接影响数值稳定性、子问题的可行性以及最终收敛速度

3 QP 子问题求解

3.1 子问题的变量与约束类型处理

由线性化与二次目标构造的 QP 子问题通常具有形式: \[ \min_d \ \frac12 d^\top B_k d+\nabla f(x_k)^\top d \] \[ \text{s.t.}\quad c(x_k)+\nabla c(x_k)^\top d=0,\quad g(x_k)+\nabla g(x_k)^\top d\le 0. \] 子问题的变量就是增量 \(d\)。等式与不等式约束在 QP 求解器中分别采用不同处理策略;同时,不少实现会在不等式约束上引入松弛、罚函数或通过活性集框架来提高鲁棒性

3.2 可行性与不可行性模式

子问题本身可能出现“不可行”的情况:即线性化后的约束集合不含解,导致无法获得满足线性化约束的方向。常见应对方式包括:

  • 调整全局化机制,使得迭代更保守(例如信赖域限制步长);
  • 使用松弛变量将硬约束软化,并通过目标函数或附加约束控制松弛的大小;
  • 采用滤波或惩罚策略,让算法在“兼顾目标下降与约束改善”的方向上前进。

区分可行与不可行模式有助于解释不同算法分支为何可能产生不同的实际表现。

3.3 典型求解器思路

QP 子问题可由多种求解器解决,常见路线包括:

  • 活性集法:通过估计可能活跃的不等式集合,把子问题简化为等式受约束的二次问题;
  • 内点法:把不等式约束以障碍项形式融入目标,以获得稳定的迭代过程;
  • 序列二次规划配套的专用求解模块:在工程实现中,针对稀疏结构、变量规模与约束稠密度提供不同策略。

无论采用哪类求解器,其共同点是:需要在数值上高效地处理二次项与线性约束,从而把 SQP 的外层迭代开销降到可接受范围。

3.4 数值稳定性与缩放策略

实际计算中,梯度与约束雅可比矩阵可能出现尺度差异,导致 QP 子问题的数值条件数变差。常见改进措施包括:

  • 对变量与约束进行尺度化(缩放);
  • 对 Hessian 近似与约束线性模型进行适当正则化;
  • 在求解器内部采用稳定的线性代数方案(如适当的分解与容差设置)。

这些做法通常不改变理论框架,但显著影响是否“收敛得动”和迭代过程是否频繁触发数值警告。

4 收敛性分析与理论要点

4.1 局部最优与二阶充分条件

收敛性讨论通常围绕“当迭代足够接近解时,算法是否会向该解收敛”。在约束优化里,一阶驻点并不足以保证局部最优,还需引入二阶信息。二阶充分条件以拉格朗日 Hessian 在可行下降方向上的正定性(或更一般的几何条件)来刻画局部最优性。SQP 在合适的 Hessian 近似与全局化机制配合下,能够把二阶近似的优势转化为更快的收敛速度。

4.2 梯度与可行性误差的度量

理论与实践中的“是否接近最优”需要可度量的指标。常见度量包括:

  • 驻点误差:例如梯度与拉格朗日乘子组合后的残差范数;
  • 约束违反程度:等式约束残差的大小与不等式约束的正向违反量;
  • 二者的综合指标:用于判断算法既是否在下降目标,也是否在逼近可行域。

由于 SQP 兼顾目标与约束,单看目标下降可能产生误判,单看可行性也可能陷入平台,因此综合指标更具诊断价值。

4.3 超线性/二次收敛的条件概览

理想情况下,当满足足够的光滑性与约束正则性、并且 Hessian 近似与 KKT 系统的局部性质匹配良好时,SQP 可能实现超线性甚至二次收敛。直观理解是:当迭代点越接近最优解,线性化误差与二阶近似误差会以更高阶速度衰减,从而使得误差递推呈现更快的收敛阶数。 在实际算法中,全局化策略会在远离最优区域时优先保证稳定性,因而不保证每一步都呈现理想收敛阶,但一旦进入局部区域,通常会逐步恢复快速收敛特征。

4.4 非光滑或退化情形的处理要点

当目标或约束不够光滑,或存在约束退化(例如活动约束集合变化频繁、乘子不稳定),严格的高阶收敛结论可能不再成立。此时 SQP 的实现通常会依赖更稳健的全局化、松弛机制或对近似 Hessian 的修正来维持迭代推进。理论分析也往往从“理想二次模型”转向“误差容忍与弱收敛”的表述。

5 全局化策略(保证不“当场崩掉”)

5.1 线搜索法:充分下降与约束兼容

线搜索通过在搜索方向 \(d_k\) 上选择合适步长 \(\alpha\),使新点 \(x_k+\alpha d_k\) 满足目标下降与约束改善的某种判据。经典做法会结合充分下降条件(如 Armijo 型条件)以及对可行性或其度量的控制。由于 SQP 的步是基于线性化模型得到的,线搜索提供了把“局部预测”转换为“实际可验证改进”的机制。

5.2 滤波(filter)方法的基本思想

滤波方法不把目标下降与约束违反绑定为固定加权形式,而是维护一个“可接受性集合”:若某一步能在目标下降与约束违反上给出新的改进组合,则更新当前集合。这样做在思想上更灵活,能减少权重选择带来的敏感性。滤波的优势通常体现在:对某些几何形态下的非线性约束问题,能够更自然地引导迭代在可行性与最优性之间取得平衡。

5.3 信赖域(trust-region)与子问题调整

信赖域方法限制步长方向的有效范围:只有当 \(d\) 在某个“可信半径”内时,线性化与二次近似才被认为足够可靠。通过求解信赖域内的子问题(必要时对 QP 模型进行截断或添加约束),算法可以在远离当前点时避免过度乐观导致的失败。信赖域半径的动态调整通常根据预测改进与实际改进的差异来更新。

5.4 参数选择与工程实践经验

全局化机制往往涉及容差、步长下界、滤波容忍参数、信赖域更新规则等。参数选择并无一劳永逸的通用解,但工程实践常用原则包括:

  • 在保证安全性的前提下尽量减少过度保守;
  • 结合问题尺度进行容差归一化;
  • 对求解器内部的最大迭代与线性代数容差进行一致设置,避免“外层认为收敛而内层数值未稳定”的错配。

这些经验通常决定了算法在真实工程任务中的稳定性与效率。

6 特殊情形与扩展

6.1 仅等式约束与一般约束

当问题仅含等式约束 \(c(x)=0\),SQP 的结构简化:不等式约束相关的活性集与互补松弛问题消失,子问题通常更接近“约束牛顿/准牛顿”形式。此时算法更易于分析与调参。 当同时存在一般约束(等式与不等式)时,互补性与活动集合变化带来额外复杂度,需要通过全局化和对约束处理的策略维持稳健性。

6.2 不等式约束:活动集与松弛变量

不等式约束的处理通常依赖活动集的思想:在迭代过程中估计哪些约束将以近似方式“卡住”搜索方向。松弛变量则常用于:

  • 缓解子问题不可行;
  • 控制线性化误差导致的约束预测偏差;
  • 在需要时允许短期违反,但以可控方式引导回到可行域。

松弛与活动集结合时,算法既能保持推进,又能逐步恢复对原约束的严格满足。

6.3 约束非线性程度对算法影响

约束函数的非线性程度会影响线性化模型的可用区间。非线性越强,线性近似越容易偏离真实约束变化,因此更需要信赖域、滤波或更保守的步长策略。反之若约束在局部表现近似线性,则 SQP 的近似质量更高,迭代更容易达到较快的收敛速度。

6.4 大规模问题的结构利用

大规模约束优化中,Hessian 近似、雅可比矩阵与 QP 子问题求解成本成为主要瓶颈。常见扩展方向包括:

  • 利用稀疏性进行存储与线性求解;
  • 对 Hessian 近似采用有限记忆(低秩)或结构化更新;
  • 对子问题求解器做简化或采用迭代型线性代数方案。

这些做法不改变 SQP 的基本思想,但显著影响其可落地程度。

7 与相关方法的比较

7.1 与牛顿法、内点法的关系

牛顿法可被视为无约束情形下的二阶迭代思想。SQP 在目标二阶建模的同时引入线性化约束,因此可看作“把牛顿思想引入约束优化”的框架。 内点法通常通过障碍项把不等式约束转化为近似无约束问题,再在一条路径上迭代。与 SQP 相比,内点法在障碍参数控制方面强调路径连续性;而 SQP 更强调每步构造一个直接对应 KKT 结构的二次子问题。

7.2 与(广义)拉格朗日法的联系

拉格朗日法通过引入乘子来处理约束与最优性条件。SQP 的 QP 子问题及其乘子估计与 KKT 条件紧密对应,因此可以把 SQP 理解为一种“在拉格朗日框架下,使用二次模型迭代逼近 KKT 系统解”的实现方式。广义拉格朗日法与 SQP 的关系主要体现在:它们都以 KKT 系统为核心目标,只是求解该系统的具体策略不同。

7.3 与交替最优化/坐标法的差异

交替最优化或坐标法通过分块或逐变量更新降低子问题复杂度,强调在某些结构下的可分性。SQP 则更依赖二阶近似与约束线性化,通常在全局耦合较强或需要严格处理约束几何时更具优势。二者适用场景不同:坐标类方法常更依赖可分结构与良好逐块最小化能力,而 SQP 更强调对约束局部曲率与可行性预测的统一建模。

7.4 与其他准二阶方法的对比

除了 SQP,广义的准二阶方法包括用于无约束或弱约束场景的准牛顿型迭代。与之相比,SQP 的核心差异在于:它把“准二阶目标模型”与“约束线性化子问题”合并为统一的迭代结构,因此更擅长处理约束优化中的几何与可行性问题。 同时,在实现上 SQP 与某些利用惩罚函数或度量投影的方法也不同:前者常直接求解 QP 子问题以接近 KKT;后者可能在约束违反上施加惩罚或投影纠正,机制不同。

8 实现要点与工程应用

8.1 初始化:起点与可行性

算法对初值的要求取决于全局化与问题难度。若起点接近可行域,SQP 往往更容易稳定推进并更快进入局部快速收敛阶段。若起点不可行,仍可通过松弛变量、滤波或信赖域来引导恢复可行性。实践中常见做法包括:

  • 使用约束修复或预处理步骤得到较合理初值;
  • 对初始 Hessian 近似采用稳健默认(如对角或单位尺度)并避免过度激进。

8.2 终止准则:驻点性、约束残差与步长

工程实现通常采用多重终止条件:

  • 驻点性指标满足阈值(例如拉格朗日梯度残差足够小);
  • 约束残差或违反量达到要求;
  • 步长或目标改进幅度小于阈值。

多重准则能减少“仅目标收敛但约束未满足”“约束满足但仍远离驻点”等情况。

8.3 计算成本:子问题求解与 Hessian 更新

每次迭代的主要开销包括:

  • 构造并求解 QP 子问题;
  • 计算梯度与约束雅可比;
  • 更新或维护 Hessian 近似矩阵。

因此,优化实现常关注:避免重复计算、利用稀疏结构、合理选择 Hessian 更新频率,以及控制 QP 求解器在精度与速度之间的平衡。

8.4 工程化调参常见“坑”(不触及争议内容)

一些常见问题包括:

  • 数值尺度不一致导致 QP 子问题病态;
  • 容差设置过紧使得内层求解难以达成,造成外层频繁重启;
  • 在不可行初值下过于依赖强可行判据,导致迭代推进受阻;
  • Hessian 近似未保持基本的正定性或稳定性,出现方向质量差。

这些坑往往不是“算法理论不对”,而是实现细节与问题尺度匹配不充分。

9 应用领域概览

9.1 机器学习中的约束优化(如结构化学习)

在机器学习中,约束优化可用于结构化预测、参数训练中的约束正则、或在特定性质下寻找满足条件的模型参数。SQP 可作为一种处理非线性约束的优化工具:当模型训练目标与约束同时呈现光滑结构,且需要较精确地满足约束时,SQP 的二次子问题框架提供了可行路径。

9.2 控制与系统辨识

控制问题常涉及“系统状态演化的约束”“输入饱和”“安全边界”等,系统辨识也可能含有参数约束与物理可行性要求。SQP 在这种场景中常用来求解局部最优的参数或控制修正量,并通过全局化策略保证迭代稳定。

9.3 信号处理与估计

在信号处理与估计中,常见约束包括能量约束、幅值限制、以及某些统计一致性条件。若这些约束与目标函数对参数呈现可计算的梯度和二阶/准二阶信息,SQP 可以在局部快速收敛方面提供优势。

9.4 计算物理与数值仿真

计算物理中的能量最小化、约束变分问题或能量函数带约束的参数拟合,都可能转化为类似 SQP 的优化形式。通过二次模型刻画局部曲率,并用线性化处理约束,可以得到更高质量的局部解,用于后续仿真或敏感性分析。

10 参考资料与进一步阅读

10.1 经典 SQP 教科书与综述

可从约束优化与非线性优化的经典教材、以及专门讨论 SQP 的综述章节入手,了解从基本框架到全局化与收敛理论的完整脉络。

10.2 QP 子问题求解器的相关文献

理解 SQP 性能的关键之一是 QP 子问题求解器的数值行为。建议阅读关于活性集法、内点法、以及稀疏 QP 求解与数值稳定性的相关资料,以把握实际实现中的时间开销与误差传播。

10.3 全局化策略的代表性工作

滤波方法、信赖域方法、以及线搜索的约束处理判据都有较系统的理论基础。进一步阅读这些工作有助于理解为何某些机制在实践中更稳健,以及参数选择的合理性来源。

10.4 现代实现与开源框架线索

开源求解框架与工程实现通常提供了可复现的默认设置、诊断信息与调参建议。通过阅读文档与示例,可以快速掌握从接口到数值内核的工程细节,并理解哪些环节最影响收敛表现。