数值优化(Numerical Optimization)(5)约束优化(三)

本次博客还是继续之前的约束优化问题,介绍求解线性规划的另一种方法——内点法(叫做内点法的原因是优化命题解的迭代过程是从约束域内部出发,沿着中心路径逐步走到边界),包含障碍函数法和原始对偶法。PS:实际应用时考虑求解效率和精度问题,通常首选的是原始对偶法。

参考自:

  1. S. Boyd, L. Vandenberghe, Convex Optimization

2. CMU 10-725,Convex Optimization

3. 学弱猹 的博客

障碍函数法

考虑问题

[公式]

由于不等式约束的存在使得问题不能直接求解,那么就想办法去掉不等式约束,这里的做法是对优化问题进行改写使得优化命题不包含不等式约束,而目标函数中包含对不等式约束的惩罚,一个很直接的想法就是对不满足不等约束的情况进行惩罚,因此可以引入如下惩罚函数

[公式]

当满足约束 [公式] 时, [公式] 即没有惩罚,当 [公式] ,也就是说明我们不希望这种情况发生。利用惩罚函数代替不等式约束可以得到优化命题

[公式]

需要注意,这个目标函数是不连续的,为了使得目标函数连续,我们可以使用对数函数 [公式]来近似这个惩罚函数,因为对数函数在 [公式] 趋于 [公式] 时的函数值趋于无穷(惩罚无限大,也是我们想要的),同时还可以保证目标函数二次可微。定义 [公式] ,并引入系数 [公式] 衡量近似程度,则上述优化命题转化为

[公式]

其中 [公式] 越大,用对数函数 [公式] 来近似原来不可导的惩罚函数 [公式] 的近似效果越好。

此时,原始带不等式约束的优化命题转化成为等式约束的优化命题,接下来我们来看看这一类问题怎么解。

将等数约束优化命题的目标函数乘以 [公式] ,(此时认为
[公式] 为固定的参数,不是变量)该问题的KKT条件可以表示为

[公式]

可以证明给定 [公式] 和对应的 [公式] ,(断句) [公式] [公式] 是原问题的对偶可行解,其中原问题的拉格朗日函数为

[公式]

进一步可以证明对偶间隔满足

[公式]

这可以作为算法的收敛准则,同时意味着随着 [公式] 趋于无穷, [公式] 趋于 [公式] 

因此求解上述KKT系统等价于求解方程组(其中 [公式] 

[公式]

根据一阶近似( [公式] 

[公式]

可以得到更新公式为( [公式] 表示求导数)

[公式]

带入 [公式] 的表达式,即左侧的导数对应为雅可比矩阵

[公式]

这样就可以得到更新公式

[公式]

每次更新解后还要增加 [公式] 的值,直到 duality gap 小于一定阈值即可。理论上来说一个 [公式] 可以对应一个解,假如说我们让 [公式] 连续变换,那么这个解也会连续变换,就会形成一条弧线。这一条弧线我们叫中心路径(central path)。

罚函数法的算法流程可以总结为(来自S. Boyd, L. Vandenberghe, Convex Optimization)

给定严格可行解 [公式] , [公式]

重复一下步骤:

  • 求解最小化问题 [公式] s.t. [公式] 的最优解 [公式]
  • 更新 [公式]
  • 如果 [公式] 则停止,否则进入下一步
  • 增加 [公式]

原始对偶内点法

还是考虑刚才那个原始问题

[公式]

该问题的扰动KKT条件(与原始KKT条件的不同之处在于互补松弛条件的等式右端是 [公式] 而不是[公式] )为

[公式]

定义

[公式]

KKT条件可以写成矩阵形式的方程组

[公式]

这是一个非线性的系统 [公式] ,仍然还是用牛顿求根的方法来计算,记[公式] ,则 [公式] (这里的 [公式] 代表求导),解的更新公式可以表示为

[公式]

定义符号

[公式]

表示点 [公式] 的对偶、中心和原始残差。解的更新公式表示为(左侧为雅可比矩阵)

[公式]

在罚函数法中,我们的对偶间隔为 [公式] ,而在原始对偶内点法中,我们构造一个替代对偶间隔

[公式]

由于 [公式] 所以对应的 [公式]

综上总结原始对偶内点法的步骤为(CMU/convexopt)

选择初始点 [公式] 使得 [公式]  [公式] 。定义 [公式] ,固定参数 [公式]

重复以下步骤:

  • 计算 [公式]
  • 计算原始对偶更新方向 [公式]
  • 使用回溯法确定步长 [公式]
  • 更新解 [公式]
  • 计算替代对偶间隔 [公式]
  • 判断替代对偶间隔是否小于一定阈值且原始、对偶残差的平方和[公式] 小于一定阈值

在上述算法中,需要用到回溯法来搜索步长,在每一步迭代时需要满足约束 [公式] 以及[公式] 开始

[公式]

进一步令 [公式] ,选择参数 [公式] 

  •  [公式] ,直到 [公式]
  •  [公式] ,直到 [公式] (保证充分下降)