1. SQP(序列二次规划)

1.1 它是什么

SQP = Sequential Quadratic Programming
这是求解光滑非线性约束优化最经典的一类方法之一。

它的基本思想是:

在当前点,把目标函数用二次模型近似,把约束函数线性化,
得到一个二次规划(QP)子问题
解这个 QP,得到搜索方向,再更新。

原问题:

SQP 在当前点 上构造:

  • 目标:Lagrangian 的二次近似
  • 约束:一阶线性化

得到一个 QP 子问题。

1.2 数学形式

Lagrangian 为

SQP 取步长方向 ,解

约束近似为

其中 常取为 Lagrangian Hessian 或其拟牛顿近似。

1.3 它为什么强

因为它直接在逼近 KKT 条件。
如果问题光滑且正则性好,SQP 常常有非常强的局部收敛性质:

  • 线性收敛
  • 超线性收敛
  • 甚至二次收敛(理想情形)

1.4 适合什么问题

适合:

  • 光滑非线性规划
  • 中等规模高精度连续优化
  • 工程设计
  • 参数辨识
  • 约束优化

1.5 优点

  • 局部收敛性能强
  • 对高精度解很有效
  • 理论成熟
  • 是非线性规划里的主力方法之一

1.6 缺点

  • 对初值较敏感
  • 主要是局部方法
  • 需要梯度甚至 Hessian 信息
  • 对不可微问题不合适
  • 大规模问题时每步 QP 可能较重

1.7 和 SCA 的关系

SQP 可以看成一种结构化的局部近似法
但它比一般 SCA 更“硬核”:

  • SCA:近似模型可以很自由
  • SQP:固定成“二次目标 + 线性约束”的 QP 形式

所以:

SQP 是 SCA 家族中非常经典、理论最成熟的一支。

2. 内点法配合凸松弛

2.1 它是什么

这不是一个单独算法,而是一种组合套路

  1. 先把原问题做凸松弛
  2. 得到 LP / QP / SOCP / SDP 等凸优化问题
  3. 再用内点法高效求解

2.2 什么叫凸松弛

原问题非凸,例如有:

  • 秩约束
  • 0-1 约束
  • 双线性项
  • 分式非凸项
  • 整数约束

把它们替换成更大的凸可行域,比如:

  • 去掉 rank = 1 约束
  • 代替
  • 用 McCormick 包络包住双线性项
  • 把 QCQP 放松成 SDP / SOCP

这样原问题变成凸问题。

2.3 什么是内点法

内点法是解凸优化问题的核心数值方法。
它不是在边界上走,而是在可行域内部通过 barrier function 逼近边界最优解。

例如不等式约束

可转成 barrier 形式:

然后逐步让

2.4 为什么这套组合重要

因为很多非凸问题虽然难,但松弛后是标准凸问题,而标准凸问题最成熟的求解器往往就是内点法。

典型流程:

  • 非凸 QCQP
  • 做 SDR 变成 SDP
  • 用内点法求 SDP
  • 得到下界或近似解

2.5 优点

  • 能利用凸优化强大的理论和数值工具
  • 常能给出下界、可行性证书、近似保证
  • 在中小规模上很稳

2.6 缺点

  • 松弛可能很松,解不接近原问题
  • 内点法对大规模稀疏超大问题可能代价高
  • 得到的解可能需要“舍入 / 恢复”才能回到原问题

2.7 适用场景

  • QCQP
  • 组合优化的连续松弛
  • 鲁棒优化
  • 控制
  • 通信波束赋形
  • 电力系统

3. Branch-and-Bound

3.1 它是什么

Branch-and-Bound(分支定界)是全局优化 / 整数优化的核心框架

思想非常朴素:

把大问题拆成很多子问题;
对每个子问题算一个下界或上界;
如果某个子问题不可能优于当前最好解,就直接剪掉;
只对有希望的子问题继续分裂。

3.2 基本机制

对于最小化问题:

  • Branch:把可行域切分成若干子区域
  • Bound:对每个子区域算一个下界
  • Incumbent:维护当前最好可行解,上界
  • 若某节点下界 当前最好上界,则剪枝

直到所有节点都被剪掉或证完最优。

3.3 它的关键

关键不在“分支”,而在“定界”。

如果下界很强,就能大量剪枝。
如果下界很弱,树会爆炸。

所以 B&B 实际效果高度依赖:

  • 松弛质量
  • 分支策略
  • 节点选择策略
  • 可行解启发式

3.4 适合什么问题

  • MILP / MIQP / MINLP
  • 全局优化
  • 非凸整数规划
  • 空间分支定界(spatial branch-and-bound)

3.5 优点

  • 理论上可以求全局最优
  • 是整数优化的标准方法
  • 可以和各种松弛、割平面、启发式结合

3.6 缺点

  • 最坏情况指数复杂度
  • 对大规模非凸问题可能极慢
  • 强依赖好的下界和剪枝

3.7 和前面方法的关系

B&B 是一个总框架,里面常嵌入:

  • LP / QP / SOCP / SDP 松弛
  • McCormick 包络
  • RLT
  • 局部 NLP 求解器
  • 启发式找可行解

所以:

Branch-and-Bound 不是“一个孤立算法”,而是全局优化的大骨架。

4. 半定松弛(SDR)

4.1 它是什么

SDR = Semidefinite Relaxation
这是把某类非凸问题提升到矩阵空间,再丢掉秩约束,变成半定规划(SDP)

最典型的是 QCQP:

引入

则二次项可写成线性形式:

但原本要求

难点就在 rank = 1。
SDR 做的就是:

保留 ,丢掉 rank = 1

于是得到 SDP。

4.2 本质

它是一种lift-and-relax

  • 升维到矩阵变量
  • 把原来非凸的二次结构线性化
  • 用 PSD 锥约束代替原来的非凸秩结构

4.3 适合什么问题

  • QCQP
  • 波束赋形
  • 最大割
  • 传感器定位
  • 相位恢复
  • 控制与鲁棒优化

4.4 优点

  • 常给出很强的下界
  • 某些问题中松弛很紧
  • 理论深厚
  • 可直接用 SDP 求解器

4.5 缺点

  • 变量维度会显著膨胀
  • SDP 求解成本高
  • 松弛后得到的矩阵不一定 rank 1,需要恢复
  • 大规模时很吃资源

4.6 解恢复

如果 SDR 解出来的 恰好 rank 1,那就完美恢复原解。
若不是,常用:

  • 随机化 rounding
  • 特征分解后取主方向
  • 局部优化再修正

4.7 和“内点法配合凸松弛”的关系

SDR 就是“凸松弛”的一种典型实例。
而 SDP 往往用内点法求。

所以:

SDR = 松弛建模层面;内点法 = 数值求解层面。