探索笔记
杂谈2026年9月14日

凸化松弛

本页目录
  1. 1. SQP(序列二次规划)
  2. 1.1 它是什么
  3. 1.2 数学形式
  4. 1.3 它为什么强
  5. 1.4 适合什么问题
  6. 1.5 优点
  7. 1.6 缺点
  8. 1.7 和 SCA 的关系
  9. 2. 内点法配合凸松弛
  10. 2.1 它是什么
  11. 2.2 什么叫凸松弛
  12. 2.3 什么是内点法
  13. 2.4 为什么这套组合重要
  14. 2.5 优点
  15. 2.6 缺点
  16. 2.7 适用场景
  17. 3. Branch-and-Bound
  18. 3.1 它是什么
  19. 3.2 基本机制
  20. 3.3 它的关键
  21. 3.4 适合什么问题
  22. 3.5 优点
  23. 3.6 缺点
  24. 3.7 和前面方法的关系
  25. 4. 半定松弛(SDR)
  26. 4.1 它是什么
  27. 4.2 本质
  28. 4.3 适合什么问题
  29. 4.4 优点
  30. 4.5 缺点
  31. 4.6 解恢复
  32. 4.7 和“内点法配合凸松弛”的关系

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 = 松弛建模层面;内点法 = 数值求解层面。

反向链接