等式约束优化

介绍等式约束优化的求解。

等式约束优化问题

min f ( x )

s . t . A x = b

其中 f 为二次可微凸函数,假设等式约束少于变量数,并且等式约束互相独立。假定存在一个最优解 x ,并用 p 表示其最优值,即:

p = inf { f ( x ) | A x = b } = f ( x )

由KKT条件,其最优解的重要条件是满足:

A x = b f ( x ) + A T v = 0

对于求解等式约束问题有两种方法:

  1. 任何等式约束优化问题都可以通过消除等式约束转化为等价的无约束问题。
  2. 使用对偶方法解决。

很多时候,直接处理等式约束比转化为无约束问题要好,这是因为转化之后可能会破坏问题的结构。

等式约束凸二次规划

min f ( x ) = ( 1 / 2 ) x T P x + q T x + r

s . t . A x = b

此问题的最优性条件为:

A x = b P x + q + A T v = 0

可以将其写成矩阵形式:

[ P A T A 0 ] [ x v ] = [ q b ]

这个矩阵称为KKT矩阵,接下来会经常用到。

消除等式约束

我们以参数化可行集的形式表示等式约束:

{ x | A x = b } = { F z + x ^ }

其中 x ^ 为任意特解, F A 的零空间的任意矩阵,可以消除等式约束为:

min f ^ ( z ) = f ( F z + x ^ )

这里的变量 z 没有约束,利用它的解 z 可以确定等式约束问题的解 x = F z + x ^

对偶方法求解等式约束

可得约束问题的对偶函数为:

(21) g ( v ) = b T v + inf x ( f ( x ) + v T A x ) (22) = b T x sup x ( ( A T v ) T x f ( x ) ) (23) = b T v f ( A T v )

因此,对偶问题为:

max b T v f ( A T v )

Slater条件成立,则强对偶性成立,即 g ( v ) = p

等式约束的Newton方法

讨论扩展的Newton方法,与之前无约束类似,但初始点必须可行(即满足 A x = b ),并且需要保证Newton方向是可行的方向,即 A Δ x n t = 0

Newton方向

基于二阶近似的定义

将目标函数换成在其 x 附近的二阶Taylor近似:

min f ^ ( x + v ) = f ( x ) + f ( x ) T v + ( 1 / 2 ) v T 2 f ( x ) v

s . t . A ( x + v ) = b

根据之前对等式约束二次问题的分析,得到KKT矩阵

[ 2 f ( x ) A T A 0 ] [ Δ x n t w ] = [ f ( x ) 0 ]

线性化最优性条件的解

可以将Newton方向 Δ x n t 解释为最优性条件:

A x = b f ( x ) + A T v = 0

我们用 x + Δ x n t 替代 x ,用 w 替代 v ,将梯度换为二阶近似,得到:

A ( x + Δ x n t ) = b , f ( x + Δ x n t ) + A T w f ( x ) + 2 f ( x ) Δ x n t + A T w = 0

利用 A x = b ,上式变为:

A Δ x n t = 0 2 f ( x ) Δ x n t + A T w = f ( x )

这和上面的KKT矩阵完全一样。

Newton减量

λ ( x ) = ( Δ x n t T 2 f ( x ) Δ x n t ) 1 / 2

这和无约束问题的Newton减量完全一样。因此也可以进行同样的解释。可参考这里

等式约束的Newton方法

  1. 给定初始点 x d o m f ,误差阈值 ϵ > 0
  2. 计算Newton步径和减量
  3. 停止准则:如果 λ 2 / 2 ϵ ,退出
  4. 直线搜索,根据回溯直线搜索确定步长 t
  5. 改进: x := x + t Δ x n t

不可行初始点的Newton方法

不可行点的Newton方向

和Newton方法一样,我们从等式约束优化的最优性条件开始:

A x = b f ( x ) + A T v = 0

x 表示当前点,不假设它是可行的,因此我们的目的是找到一个方向 Δ x 使得 x + Δ x 满足最优性条件,即 x + Δ x x 。因此我们用 x + Δ x 代替 x ,并利用梯度的一阶近似:

A ( x + Δ x ) = b x f ( x ) + 2 f ( x ) Δ x + A T w = 0

写成矩阵形式为:

[ 2 f ( x ) A T A 0 ] [ Δ x w ] = [ f ( x ) A x b ]

与之前的KKT矩阵的差别在于 A x b ,表示为残差向量。

猜你喜欢

转载自blog.csdn.net/crazy_scott/article/details/80914397