# 逐次线性规划
-
基本思想
重复地对目标函数和约束进行线性化,通过求解一系列线性规划子问题来逼近原非线性优化问题。
实现方式:
- 通常涉及信赖域(trust regions),防止迭代点偏离线性近似的有效范围
- 一些实现使用罚函数来保持相对于真实约束的可行性
-
算法步骤
给定初始点 ,迭代过程如下:
- 步骤 1:在当前点 处线性化目标函数和约束
- 步骤 2:求解线性规划子问题
得到解
- 步骤 3:从 出发,沿方向 进行一维搜索
得到步长 ,更新
-
优缺点
优点:
- 相对快速
- 理论简单
- 有商业软件包可用
缺点:
- 由于问题的高度非线性,方法在实践中经常失败
- 信赖域选择不当可能产生不可行的线性规划问题
-
例子
考虑问题:
取初始点 :
- 第一次迭代:,求解线性规划得 ,一维搜索得 ,
- 第二次迭代:,求解线性规划得
- 继续迭代,最终收敛到
# 割平面法
-
基本思想
通过逐步添加割平面(cutting planes)来逼近可行域,每次迭代要么确定当前点在可行域内,要么添加一个超平面将当前点与可行域分离。
-
切平面预言(Cutting Plane Oracle)
定义:给定集合 和点 ,切平面预言要么确定 ,要么确定一个超平面 分隔集合 和点 。
-
算法流程
- 从包含最优解的初始多面体开始
- 每次迭代求解当前多面体上的优化问题
- 如果解不在原可行域内,调用切平面预言添加新的约束
- 重复直到收敛
-
应用
割平面法广泛应用于整数规划、组合优化等问题,通过添加割平面来收紧松弛问题的可行域。
# Frank-Wolfe 算法(条件梯度法)
-
基本思想
适用于约束优化问题,每次迭代在当前可行域内找到使目标函数梯度方向下降最快的点,然后沿该方向进行线搜索。
-
算法步骤
对于问题 ,其中 是紧凸集:
- 步骤 1:在当前点 处计算梯度
- 步骤 2:求解线性优化子问题
- 步骤 3:确定步长 (通常通过线搜索或固定步长)
- 步骤 4:更新
-
特点
- 每次迭代只需要求解线性优化问题,计算成本相对较低
- 特别适用于可行域是单纯形、 球等简单集合的情况
- 收敛速度通常为
-
应用场景
- 稀疏优化问题
- 矩阵补全
- 机器学习中的某些约束优化问题
# 序列二次规划(SQP)
-
基本思想
将非线性约束优化问题转化为一系列二次规划(QP)子问题,通过求解这些 QP 子问题逐步逼近最优解。
-
算法框架
对于问题:
在第 次迭代,求解 QP 子问题:
其中 是拉格朗日函数, 是约束的雅可比矩阵。
-
Hessian 矩阵的近似
由于计算精确的 Hessian 矩阵 成本较高,通常使用拟牛顿法(如 BFGS)来近似:
阻尼 BFGS 更新:
给定对称正定矩阵 ,定义 和 ,设置:
其中标量 定义为:
更新 :
-
简化技巧
简化 1:使用最小二乘乘子(least-squares multipliers)
简化 2:忽略交叉项 ,只更新约化 Hessian 矩阵 的拟牛顿近似。
-
优缺点
优点:
- 能处理二次目标函数(实践中很常见)
- 能处理一般非线性规划问题
- 比许多现有算法更快
- 有商业代码可用
缺点:
- 许多问题有非线性约束,约束的线性化可能产生不可行的 QP
- 无法处理非正定矩阵问题
- 对于大规模问题,存储近似 Hessian 矩阵需要大量内存
-
收敛性
- SQP 方法在适当假设下是全局收敛的,并具有超线性收敛速度
- 实际上,SQP 的收敛性与起始解的选取有关,因此常使用多起点(multi-start)方式随机选择不同起始解
- Maratos 效应:即使是在超线性收敛步,单位步长也可能无法达到,导致 SQP 方法的收敛速度仅为线性