等式约束优化问题

Posted oliveQ

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了等式约束优化问题相关的知识,希望对你有一定的参考价值。

等式约束优化问题

等式约束的基本定义

  • 等式约束问题
    min ⁡ f ( x ) , s . t . A x = b , A ∈ R p × n , r a n k ( A ) = p \\minf(x),s.t. Ax=b,A\\isin R^p\\times n,rank(A)=p minf(x),s.t.Ax=bARp×n,rank(A)=p

    f是凸函数,二次可微,假设 p ∗ p^* p是存在且确定的, p < n p<n p<n,即约束条件小于变量维数,可以存在多解,否则可能会无解

  • 等式约束的对偶问题
    拉格朗日函数: L ( x , ν ) = f ( x ) + ν T ( A x − b ) L(x,\\nu)=f(x)+\\nu^T(Ax-b) L(x,ν)=f(x)+νT(Axb),设最优点 x ∗ x^* x

    由此得到KKT条件方程组 A x ∗ = b ∇ f ( x ∗ ) + A T ν ∗ = 0 \\begincasesAx^*=b \\\\ \\nabla f(x^*)+A^T\\nu^*=0 \\endcases Ax=bf(x)+ATν=0

    x ∗ 是 最 优 点 , ν ∗ 是 对 偶 最 优 点 , p ∗ = inf ⁡ x f ( x ) ∣ A x = b = f ( x ∗ ) x^*是最优点,\\nu^*是对偶最优点,p^*=\\inf_x\\f(x) | Ax=b\\=f(x^*) xνp=infxf(x)Ax=b=f(x)

  • 例子:二次规划问题

    min ⁡ 1 2 x T P x + q T x + r A x = b    ⟹    A x = b P x + q + A T ν ∗ = 0 \\begincases\\min\\frac12x^TPx+q^Tx+r \\\\ Ax=b \\endcases\\implies\\begincasesAx=b \\\\ Px+q+A^T\\nu^*=0 \\endcases min21xTPx+qTx+rAx=bAx=bPx+q+ATν=0

    前一个左边的矩阵 ( n + p ) × ( n + p ) (n+p)\\times(n+p) (n+p)×(n+p),复杂度是 O ( ( n + p ) 3 ) O((n+p)^3) O((n+p)3)
    二次规划问题仅求导一次就可以实现KKT条件,所以

    • 牛顿法(迭代步需要求二阶导):利用二次函数(存在海森矩阵)去逼近普通函数(下文的目标)
    • 梯度下降法:利用一次函数(存在导数)去逼近普通函数

消除等式约束

  • 通过变量替换实现等式消除

    • 变量替换 x ∗ = F z ∗ + x ^ x^*=Fz^*+\\hatx x=Fz+x^

      x ^ \\hatx x^是任意的一个特解,那么可以实现变换 x ∣ A x = b = F z + x ^ ∣ z ∈ R ( n − p ) \\x|Ax=b\\=\\Fz+\\hatx|z\\isin R^(n-p)\\ xAx=b=Fz+x^zR(np)

      于 是 得 到 A ( F z + x ^ ) = b    ⟹    A F z = 0    ⟹    A p × n F n × ( n − p ) = 0 于是得到A(Fz+\\hatx)=b\\implies AFz=0\\implies A_p\\times nF_n\\times(n-p)=0 A(Fz+x^)=bAFz=0Ap×nFn×(np)=0

      于是A的行组成空间与F的列组成空间正交,即A的零空间就是F的值空间。

      min ⁡ f ( x ) , s . t . A x = b    ⟺    min ⁡ z F ^ ( z ) = f ( F z + x ^ ) \\minf(x),s.t. Ax=b \\iff \\min_z \\hatF(z)=f(Fz+\\hatx) minf(x),s.t.Ax=bminzF^(z)=f(Fz+x^)【把等式约束加到目标函数里,变成无约束问题】

    • 求解对偶最优解 ν ∗ \\nu^* ν

      原问题的KKT系统: ∇ f ( x ∗ ) + A T ν ∗ = 0 \\nabla f(x^*)+A^T\\nu^*=0 f(x)+ATν=0,同时左乘矩阵A(实现满秩运算)

      得到 ν ∗ = − ( A A T ) − 1 A ∇ f ( x ∗ ) \\nu^*=-(AA^T)^-1A\\nabla f(x^*) ν=(AAT)1Af(x)

      验证目标: ∇ f ( x ∗ ) − A T ( A A T ) − 1 A ∇ f ( x ∗ ) = 0 \\nabla f(x^*)-A^T(AA^T)^-1A\\nabla f(x^*)=0 f(x)AT(AA以上是关于等式约束优化问题的主要内容,如果未能解决你的问题,请参考以下文章

      07-内点法(不等式约束优化算法)

      优化问题

      优化理论09-----线性等式约束问题的投影方法投影最速下降算法解决方向查找问题(DFP)牛顿法的修正在线性等式约束变度量法

      Scipy.optimize 不等式约束 - 考虑不等式的哪一侧?

      添加除法不等式约束

      Quadratic Programming