【最优化方法】约束最优化问题

文章目录

  • 不等式约束问题
    • 可行方向
    • 线性化可行方向
    • 序列可行方向
    • KKT 定理
    • 示例
  • 等式约束问题
    • 二次罚函数方法
    • 示例

不等式约束问题

考虑约束最优化问题
min ⁡ f ( x ) s . t . c i ( x ) = 0 , i = 1 , 2 , ⋯   , m ′ , c i ( x ) ⩾ 0 , i = m ′ + 1 , m ′ + 2 , ⋯   , m , \begin{aligned}\min&\quad f(x)\\\mathrm{s.t.}&\quad c_i(x)=0,\quad i=1,2,\cdots,m^{\prime},\\&\quad c_i(x)\geqslant0,\quad i=m^{\prime}+1,m^{\prime}+2,\cdots,m,\end{aligned} mins.t.f(x)ci(x)=0,i=1,2,,m,ci(x)0,i=m+1,m+2,,m,

其中 x ∈ R n , m ′ ⩽ m x\in\mathbf{R}^n,m^{\prime}\leqslant m xRn,mm,记可行域 X X X
X = { x ∣ c i ( x ) = 0 ,   i = 1 , ⋯   , m ′ ;   c i ( x ) ⩾ 0 ,   i = m ′ + 1 , ⋯   , m } . X=\{x\mid c_i(x)=0,\:i=1,\cdots,m^{\prime};\:c_i(x)\geqslant0,\:i=m^{\prime}+1,\cdots,m\}. X={xci(x)=0,i=1,,m;ci(x)0,i=m+1,,m}.

可行方向

x ∗ ∈ X , 0 ≠ d ∈ R n x^*\in X,0\neq d\in\mathbf{R}^n xX,0=dRn,如果存在 δ > 0 \delta>0 δ>0 使得
x ∗ + t d ∈ X , ∀ t ∈ [ 0 , δ ] , x^{*}+td\in X,\quad\forall t\in[0,\delta], x+tdX,t[0,δ],

则称 d d d X X X x ∗ x^{*} x 处的可行方向, X X X x ∗ x^{*} x 处的所有可行方向组成的集合记为 F D ( x ∗ , X ) . \mathcal{FD}(x^*,X). FD(x,X).

线性化可行方向

x ∗ ∈ X ,   0 ≠ d ∈ R n x^*\in X,\:0\neq d\in\mathbf{R}^n xX,0=dRn,如果
d T ∇ c i ( x ∗ ) = 0 , i ∈ E ; d T ∇ c i ( x ∗ ) ⩾ 0 , i ∈ I ( x ∗ ) ; \begin{array}{ll}{d^{\mathrm{T}}\nabla c_{\mathrm{i}}(x^{*})=0,\quad i\in\mathcal{E};}\\{d^{\mathrm{T}}\nabla c_{\mathrm{i}}(x^{*})\geqslant0,\quad i\in\mathcal{I}(x^{*});}\\\end{array} dTci(x)=0,iE;dTci(x)0,iI(x);

则称 d d d X X X x ∗ x^* x 处的线性化可行方向, X X X x ∗ x^* x 处的所有线性化可行方向的集合记为 L F D ( x ∗ , X ) . \mathcal{LFD}(x^*,X). LFD(x,X).

序列可行方向

x ∗ ∈ X , 0 ≠ d ∈ R n x^*\in X,\quad0\neq d\in\mathbf{R}^n xX,0=dRn,如果存在序列 { d k } ( k = 1 , 2 , ⋯   ) \{d_k\}(k=1,2,\cdots) {dk}(k=1,2,) { δ k } ( k = 1 , 2 , ⋯   ) \{\delta_k\}(k=1,2,\cdots) {δk}(k=1,2,) 使得
x ∗ + δ k d k ∈ X , x^{*}+\delta_{k}d_{k}\in X, x+δkdkX,

具有 d k → d , δ k > 0 d_k\to d,\delta_k>0 dkd,δk>0 δ k → 0 \delta_k\to0 δk0, 则称 d d d X X X x ∗ x^* x 处的序列可行方向。 X X X x ∗ x^* x 处的所有序列可行方向的集合记为 S F D ( x ∗ , X ) . S\mathcal{FD}(x^*,X). SFD(x,X).

KKT 定理

x ∗ x^* x 是问题的局部极小点,设 f ( x ) , c i ( x ) ( i = 1 , ⋯   , m ) f(x),c_i(x)(i=1,\cdots,m) f(x),ci(x)(i=1,,m) x ∗ x^* x 的邻城内一阶连续可微,如果约束规范条件 (CQ)
S F D ( x ∗ , X ) = L F D ( x ∗ , X ) \mathcal{SFD}(x^{*},X)=\mathcal{LFD}(x^{*},X) SFD(x,X)=LFD(x,X)

成立,则存在 λ i ∗ ( i = 1 , 2 , ⋯   , m ) \lambda_i^*(i=1,2,\cdots,m) λi(i=1,2,,m) 使得
∇ f ( x ∗ ) = ∑ i = 1 m λ i ∗ ∇ c i ( x ∗ ) , c i ( x ∗ ) = 0 ,   i ∈ E , c i ( x ∗ ) ⩾ 0 ,   i ∈ I , λ i ∗ ⩾ 0 , i ∈ I , λ i ∗ c i ( x ∗ ) = 0 ,   i ∈ I . \begin{aligned} &\nabla f(x^{*})=\sum_{i=1}^{m}\lambda_{i}^{*}\nabla c_{i}(x^{*}), \\ &c_{i}(x^{*})=0,\:i\in\mathcal{E}, \\ &c_{i}(x^{*})\geqslant0,\:i\in\mathcal{I}, \\ &\lambda_{i}^{*}\geqslant0,\quad i\in\mathcal{I}, \\ &\lambda_{i}^{*}c_{i}(x^{*})=0,\:i\in\mathcal{I}. \end{aligned} f(x)=i=1mλici(x),ci(x)=0,iE,ci(x)0,iI,λi0,iI,λici(x)=0,iI.

示例

min ⁡ ( x 1 − 6 ) 2 + ( x 2 − 6 ) 2 s . t . x 1 + x 2 = 1 2 x 1 + 3 x 2 ⩽ 6 \begin{aligned} \min&\quad (x_1-6)^2+(x_2-6)^2\\ \mathrm{s.t.}&\quad x_1+x_2=1\\ &\quad 2x_1+3x_2 \leqslant 6 \end{aligned} mins.t.(x16)2+(x26)2x1+x2=12x1+3x26

解: 我们可以使用拉格朗日乘数法(KKT条件是其在非线性优化中的推广)来求解。首先构建拉格朗日函数
L ( x 1 , x 2 , λ 1 , λ 2 ) = ( x 1 − 6 ) 2 + ( x 2 − 6 ) 2 + λ 1 ( x 1 + x 2 − 1 ) + λ 2 ( 2 x 1 + 3 x 2 − 6 ) L(x_1, x_2, \lambda_1, \lambda_2) = (x_1 - 6)^2 + (x_2 - 6)^2 + \lambda_1(x_1 + x_2 - 1) + \lambda_2(2x_1 + 3x_2 - 6) L(x1,x2,λ1,λ2)=(x16)2+(x26)2+λ1(x1+x21)+λ2(2x1+3x26)

接下来,我们需要满足KKT条件:

  1. 原始问题的梯度等于拉格朗日函数的梯度:
    ∇ x L = [ 2 ( x 1 − 6 ) + λ 1 + 2 λ 2 2 ( x 2 − 6 ) + λ 1 + 3 λ 2 ] = [ 0 0 ] \nabla_x L = \begin{bmatrix} 2(x_1 - 6) + \lambda_1 + 2\lambda_2 \\ 2(x_2 - 6) + \lambda_1 + 3\lambda_2 \end{bmatrix} = \begin{bmatrix} 0 \\ 0 \end{bmatrix} xL=[2(x16)+λ1+2λ22(x26)+λ1+3λ2]=[00]

  2. 约束条件必须得到满足:
    x 1 + x 2 = 1 2 x 1 + 3 x 2 ⩽ 6 x_1 + x_2 = 1 \\ 2x_1 + 3x_2 \leqslant 6 x1+x2=12x1+3x26

  3. 拉格朗日乘子对应的互补松弛条件:
    λ 1 ( x 1 + x 2 − 1 ) = 0 λ 2 ( 2 x 1 + 3 x 2 − 6 ) = 0 \lambda_1(x_1 + x_2 - 1) = 0 \\ \lambda_2(2x_1 + 3x_2 - 6) = 0 λ1(x1+x21)=0λ2(2x1+3x26)=0

    并且要求 λ 1 ≥ 0 λ_1 ≥ 0 λ10,当 x 1 + x 2 ≠ 1 x_1 + x_2 ≠ 1 x1+x2=1 时取等号; λ 2 ≥ 0 λ_2 ≥ 0 λ20,当 2 x 1 + 3 x 2 < 6 2x_1 + 3x_2 < 6 2x1+3x2<6 时取等号。

联立以上方程可得方程组:
2 ( x 1 − 6 ) + λ 1 + 2 λ 2 = 0 2 ( x 2 − 6 ) + λ 1 + 3 λ 2 = 0 x 1 + x 2 = 1 − 2 x 1 − 3 x 2 ≥ − 6 λ 1 ≥ 0 λ 2 ≥ 0 λ 1 ( x 1 + x 2 − 1 ) = 0 λ 2 ( 2 x 1 + 3 x 2 − 6 ) = 0 \begin{aligned} 2(x_1-6) + \lambda_1 + 2\lambda_2 &= 0 \\ 2(x_2-6) + \lambda_1 + 3\lambda_2 &= 0 \\ x_1 + x_2 &= 1 \\ -2x_1 - 3x_2 &\geq -6 \\ \lambda_1 &\geq 0 \\ \lambda_2 &\geq 0 \\ \lambda_1 (x_1 + x_2 - 1) &= 0 \\ \lambda_2 (2x_1 + 3x_2 - 6) &= 0 \end{aligned} 2(x16)+λ1+2λ22(x26)+λ1+3λ2x1+x22x13x2λ1λ2λ1(x1+x21)λ2(2x1+3x26)=0=0=1600=0=0

等式约束问题

二次罚函数方法

对于等式约束问题
min ⁡ x f ( x ) s . t . c i ( x ) = 0 , i ∈ ε , \begin{aligned} \min_x & \quad f(x)\\\mathrm{s.t.}&\quad c_i(x)=0,\quad i\in\varepsilon, \end{aligned} xmins.t.f(x)ci(x)=0,iε,

二次罚函数 Q ( x ; μ ) Q(x;\mu) Q(x;μ) 定义
Q ( x ; μ ) ≜ f ( x ) + 1 2 μ ∑ i ∈ E c i 2 ( x ) , Q(x;\mu)\triangleq f(x)+\frac{1}{2\mu}\sum_{i\in{\mathcal E}}c_{i}^{2}(x), Q(x;μ)f(x)+2μ1iEci2(x),

这里 μ > 0 \mu>0 μ>0 是罚参数,当 μ \mu μ 趋于零时,如果约束不可行,即 c i ( x ) ≠ 0 , i ∈ E c_i(x)\neq0,i\in\mathcal{E} ci(x)=0,iE,则违反约束的惩罚项剧烈地增大。可以证明:当 μ k ↓ 0 \mu_k\downarrow0 μk0 时罚函数 Q ( x ; μ k ) Q(x;\mu_k) Q(x;μk) 的极小点 x k x_k xk 就是原问题的极小点。因为惩罚项是二次的,所以光滑可微,这样可以使用无约束优化技术来求解得罚函数 Q ( x ; μ k ) Q(x;\mu_k) Q(x;μk) 的近似极小点 x k . x_k. xk.

二次罚函数方法是一种用于处理约束最优化问题的优化算法,它通过在目标函数中引入二次罚项,将约束问题转化为无约束问题。以下是二次罚函数方法的一般步骤:

  1. 给定 μ 0 > 0 \mu_0>0 μ0>0, 允许参数值 ε > 0 \varepsilon>0 ε>0,初始点 x 0 s x_0^s x0s k = 0. k=0. k=0.

  2. x k s x_k^s xks 开始,极小化 Q ( x ; μ k ) Q(x;\mu_k) Q(x;μk) 得近似极小点 x k x_k xk

  3. ∥ ∇ Q ( x ; μ k ) ∥ ⩽ ε \|\nabla Q(x;\mu_k)\|\leqslant\varepsilon ∥∇Q(x;μk)ε 时,终止,得近似解 x k x_k xk;否则,选择新的罚参数 μ k + 1 ∈ ( 0 , μ k ) \mu_{k+ 1}\in ( 0, \mu_k) μk+1(0,μk),令 x k + 1 s : = x k , k : = k + 1 x_{k+ 1}^s: = x_k, k: = k+ 1 xk+1s:=xk,k:=k+1,转步 2.

注意,罚参数序列 { μ k } \{\mu_k\} {μk} 要合适地选择. 当极小化 Q ( x ; μ k ) Q(x;\mu_k) Q(x;μk) 的计算量很大时,可以选择适当缩小 μ k \mu_k μk,例如 μ k + 1 = 0.7 μ k \mu_{k+1}=0.7\mu_k μk+1=0.7μk. 如果极小化 Q ( x ; μ k ) Q(x;\mu_k) Q(x;μk) 计算量不大,可大大地缩小 μ k \mu_k μk,例如 μ k + 1 = 0.1 μ k \mu_{k+1}=0.1\mu_k μk+1=0.1μk. 另外,终止条件 ∥ ∇ Q ( x ; μ k ) ∥ ⩽ ε \|\nabla Q(x;\mu_k)\|\leqslant\varepsilon ∥∇Q(x;μk)ε 也可采用 ∥ c ( x k ) ∥ ⩽ ε . \|c(x_k)\|\leqslant\varepsilon. c(xk)ε.

示例

考虑问题
min ⁡      1 2 ( x 1 − 3 ) 2 + ( x 2 − 3 ) 2 s . t .      x 1 + x 2 = 1 \begin{aligned} \min & ~~~~\frac{1}{2}(x_1-3)^2+(x_2-3)^2 \\ \mathrm{s.t.} & ~~~~ x_1+x_2=1 \end{aligned} mins.t.    21(x13)2+(x23)2    x1+x2=1

不同因子 μ \mu μ,求极小值点 Q ( x , μ ) Q(x,\mu) Q(x,μ)
Q ( x , μ ) = 1 2 ( x 1 − 3 ) 2 + ( x 2 − 3 ) 2 + 1 2 μ ( x 1 + x 2 − 1 ) 2 Q(x,\mu)=\frac{1}{2}(x_1-3)^2+(x_2-3)^2+\frac{1}{2\mu}(x_1+x_2-1)^2 Q(x,μ)=21(x13)2+(x23)2+2μ1(x1+x21)2 c 1 = x 1 − 3 + 1 μ ( x 1 + x 2 − 1 ) = 0 c 2 = 2 x 2 − 6 + 1 μ ( x 1 + x 2 − 1 ) = 0 \begin{aligned} c_1 & = x_1-3 + \frac{1}{\mu}(x_1+x_2-1) = 0 \\ c_2 & = 2x_2-6 + \frac{1}{\mu}(x_1+x_2-1) = 0 \\ \end{aligned} c1c2=x13+μ1(x1+x21)=0=2x26+μ1(x1+x21)=0

我们可以先给罚参数 μ \mu μ 一个初始值 1 1 1,然后逐步减小罚参数

μ = 1 \mu = 1 μ=1
{ 2 x 1 + x 2 − 4 = 0 x 1 + 3 x 2 − 7 = 0 ⇒ { x 1 = 1 x 2 = 2 \begin{cases} 2x_1+x_2-4=0\\ x_1+3x_2-7=0 \end{cases} \Rightarrow \begin{cases} x_1=1\\ x_2=2\\ \end{cases} {2x1+x24=0x1+3x27=0{x1=1x2=2

μ = 0.1 \mu = 0.1 μ=0.1 x 1 = − 0.21875    x 2 = 1.4375 x_1 = -0.21875 ~~ x_2 = 1.4375 x1=0.21875  x2=1.4375

μ = 0.01 \mu = 0.01 μ=0.01 x 1 = − 0.3211920529801325    x 2 = 1.344370860927152 x_1 = -0.3211920529801325 ~~ x_2 = 1.344370860927152 x1=0.3211920529801325  x2=1.344370860927152

μ = 0.001 \mu = 0.001 μ=0.001 x 1 = − 0.3321119253830779    x 2 = 1.334443704197202 x_1 = -0.3321119253830779 ~~ x_2 = 1.334443704197202 x1=0.3321119253830779  x2=1.334443704197202

可见 Q ( x ; μ ) Q(x;\mu) Q(x;μ) 非常接近极小点 ( − 1 3 , 4 3 ) T \begin{aligned}(-\frac{1}{3},\frac{4}{3})^T\end{aligned} (31,34)T

其实这题可以直接通过化简得到
x 1 = 3 μ − 1 2 μ + 3 = 3 2 − 11 4 μ + 6 x 2 = 6 μ + 4 2 μ + 3 = 3 − 5 2 μ + 3 \begin{aligned} x_1 & = \frac{3\mu-1}{2\mu+3} = \frac{3}{2} - \frac{11}{4\mu+6} \\ x_2 & = \frac{6\mu+4}{2\mu+3} = 3 - \frac{5}{2\mu+3} \\ \end{aligned} x1x2=2μ+33μ1=234μ+611=2μ+36μ+4=32μ+35

显然当 μ → 0 \mu \to 0 μ0 函数收敛至 ( − 1 3 , 4 3 ) T \begin{aligned}(-\frac{1}{3},\frac{4}{3})^T\end{aligned} (31,34)T

你可能感兴趣的:(最优化方法,约束最优化,KKT定理,二次罚函数方法)