不等式约束问题
考虑约束最优化问题
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
x∈Rn,m′⩽m,记可行域
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={x∣ci(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
x∗∈X,0=d∈Rn,如果存在
δ
>
0
\delta>0
δ>0 使得
x
∗
+
t
d
∈
X
,
∀
t
∈
[
0
,
δ
]
,
x^{*}+td\in X,\quad\forall t\in[0,\delta],
x∗+td∈X,∀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
x∗∈X,0=d∈Rn,如果
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}
dT∇ci(x∗)=0,i∈E;dT∇ci(x∗)⩾0,i∈I(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
x∗∈X,0=d∈Rn,如果存在序列
{
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∗+δkdk∈X,
具有 d k → d , δ k > 0 d_k\to d,\delta_k>0 dk→d,δk>0 和 δ k → 0 \delta_k\to0 δk→0, 则称 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=1∑mλi∗∇ci(x∗),ci(x∗)=0,i∈E,ci(x∗)⩾0,i∈I,λi∗⩾0,i∈I,λi∗ci(x∗)=0,i∈I.
示例
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.(x1−6)2+(x2−6)2x1+x2=12x1+3x2⩽6
解: 我们可以使用拉格朗日乘数法(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)=(x1−6)2+(x2−6)2+λ1(x1+x2−1)+λ2(2x1+3x2−6)
接下来,我们需要满足KKT条件:
-
原始问题的梯度等于拉格朗日函数的梯度:
∇ 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(x1−6)+λ1+2λ22(x2−6)+λ1+3λ2]=[00] -
约束条件必须得到满足:
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+3x2⩽6 -
拉格朗日乘子对应的互补松弛条件:
λ 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+x2−1)=0λ2(2x1+3x2−6)=0并且要求 λ 1 ≥ 0 λ_1 ≥ 0 λ1≥0,当 x 1 + x 2 ≠ 1 x_1 + x_2 ≠ 1 x1+x2=1 时取等号; λ 2 ≥ 0 λ_2 ≥ 0 λ2≥0,当 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(x1−6)+λ1+2λ22(x2−6)+λ1+3λ2x1+x2−2x1−3x2λ1λ2λ1(x1+x2−1)λ2(2x1+3x2−6)=0=0=1≥−6≥0≥0=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μ1i∈E∑ci2(x),
这里 μ > 0 \mu>0 μ>0 是罚参数,当 μ \mu μ 趋于零时,如果约束不可行,即 c i ( x ) ≠ 0 , i ∈ E c_i(x)\neq0,i\in\mathcal{E} ci(x)=0,i∈E,则违反约束的惩罚项剧烈地增大。可以证明:当 μ k ↓ 0 \mu_k\downarrow0 μk↓0 时罚函数 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.
二次罚函数方法是一种用于处理约束最优化问题的优化算法,它通过在目标函数中引入二次罚项,将约束问题转化为无约束问题。以下是二次罚函数方法的一般步骤:
-
给定 μ 0 > 0 \mu_0>0 μ0>0, 允许参数值 ε > 0 \varepsilon>0 ε>0,初始点 x 0 s x_0^s x0s; k = 0. k=0. k=0.
-
从 x k s x_k^s xks 开始,极小化 Q ( x ; μ k ) Q(x;\mu_k) Q(x;μk) 得近似极小点 x k x_k xk;
-
当 ∥ ∇ 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(x1−3)2+(x2−3)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(x1−3)2+(x2−3)2+2μ1(x1+x2−1)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=x1−3+μ1(x1+x2−1)=0=2x2−6+μ1(x1+x2−1)=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+x2−4=0x1+3x2−7=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=23−4μ+611=2μ+36μ+4=3−2μ+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