乘子法
惩罚函数法再分析
主要缺点: 当惩罚因子 M M M增大, 无约束问题的目标函数 F ( x , M ) F(\boldsymbol{x},M) F(x,M)的Hesse矩阵越来越病态, 使得无约束优化方法的计算难以进行. 下面分析 M M M必须无限增大的原因.
考虑等式约束优化问题
min
f
(
x
)
s
.
t
.
h
i
(
x
)
=
0
,
i
=
1
,
2
,
.
.
.
,
p
.
\begin{align*} & \min f(\boldsymbol{x})\\ & s.t. h_i(\boldsymbol{x})=0,i=1,2,...,p. \end{align*}
minf(x)s.t.hi(x)=0,i=1,2,...,p.
引入罚函数
F
(
x
,
M
)
=
f
(
x
)
+
∑
i
=
1
p
[
h
i
(
x
)
]
2
,
F(\boldsymbol{x},M)=f(\boldsymbol{x})+\sum_{i=1}^p[h_i(\boldsymbol{x})]^2,
F(x,M)=f(x)+i=1∑p[hi(x)]2,
若
x
∗
\boldsymbol{x}^*
x∗是问题的最优解, 则
h
i
(
x
∗
)
=
0
,
i
=
1
,
2
,
.
.
.
,
p
h_i(\boldsymbol{x}^*)=0,i=1,2,...,p
hi(x∗)=0,i=1,2,...,p. 于是有
∇
x
F
(
x
∗
,
M
)
=
∇
f
(
x
∗
)
+
2
M
∑
i
=
1
p
h
i
(
x
∗
)
∇
h
i
(
x
∗
)
=
∇
f
(
x
∗
)
.
\nabla_xF(\boldsymbol{x}^*,M)=\nabla f(\boldsymbol{x}^*)+2M\sum_{i=1}^ph_i(\boldsymbol{x}^*)\nabla h_i(\boldsymbol{x}^*)=\nabla f(\boldsymbol{x}^*).
∇xF(x∗,M)=∇f(x∗)+2Mi=1∑phi(x∗)∇hi(x∗)=∇f(x∗).
另一方面, 考虑上述约束问题的
L
a
g
r
a
n
g
e
Lagrange
Lagrange函数
L
(
x
,
μ
)
=
f
(
x
)
+
∑
i
=
1
p
μ
i
h
i
(
x
)
,
L(\boldsymbol{x},\mu)=f(\boldsymbol{x})+\sum_{i=1}^p\mu_ih_i(\boldsymbol{x}),
L(x,μ)=f(x)+i=1∑pμihi(x),
由KKT条件有
∇
x
L
(
x
∗
,
μ
∗
)
=
∇
f
(
x
∗
)
+
∑
i
=
1
p
μ
i
∇
h
i
(
x
∗
)
=
0.
\nabla_xL(\boldsymbol{x}^*,\mu^*)=\nabla f(\boldsymbol{x}^*)+\sum_{i=1}^p \mu_i\nabla h_i(\boldsymbol{x}^*)=0.
∇xL(x∗,μ∗)=∇f(x∗)+i=1∑pμi∇hi(x∗)=0.
则可知在通常情况下,
∇
f
(
x
∗
)
≠
0
\nabla f(\boldsymbol{x}^*)\ne 0
∇f(x∗)=0. 只有当
x
∗
\boldsymbol{x}^*
x∗是
f
(
x
)
f(\boldsymbol{x})
f(x)无约束问题稳定点时,
∇
f
(
x
∗
)
=
0
\nabla f(\boldsymbol{x}^*)= 0
∇f(x∗)=0才成立. 因此, 找不到一个有限的
M
M
M, 使得
∇
x
F
(
x
∗
,
M
)
=
0
\nabla_xF(\boldsymbol{x}^*,M)=0
∇xF(x∗,M)=0成立, 只能期望
lim
M
→
+
∞
∇
x
F
(
x
∗
,
M
)
=
0
\lim_{M\rightarrow+\infty}\nabla_xF(\boldsymbol{x}^*,M)=0
limM→+∞∇xF(x∗,M)=0.
以上分析过程启发我们将 L a g r a n g e Lagrange Lagrange函数与惩罚项相结合, 构造增广 L a g r a n g e Lagrange Lagrange函数, 也就是接下来要介绍的乘子法.
Hestenes乘子法
Hestenes首先引入增广
L
a
g
r
a
n
g
e
Lagrange
Lagrange函数
φ
(
x
,
μ
)
=
f
(
x
)
+
∑
i
=
1
p
μ
i
h
i
(
x
)
+
c
2
∑
i
=
1
p
[
h
i
(
x
)
]
2
=
:
L
(
x
,
μ
)
+
c
2
∑
i
=
1
p
[
h
i
(
x
)
]
2
.
\begin{align*} \varphi(\boldsymbol x,\boldsymbol{\mu})& =f(\boldsymbol x)+\sum_{i=1}^p\mu_ih_i(x)+\frac{c}{2}\sum_{i=1}^p[h_i(x)]^2\\ & =:L(\boldsymbol x,\boldsymbol \mu)+\frac{c}{2}\sum_{i=1}^p[h_i(x)]^2. \end{align*}
φ(x,μ)=f(x)+i=1∑pμihi(x)+2ci=1∑p[hi(x)]2=:L(x,μ)+2ci=1∑p[hi(x)]2.
其中
μ
=
[
μ
1
,
.
.
.
,
μ
p
]
\boldsymbol \mu=[\mu_1,...,\mu_p]
μ=[μ1,...,μp]为
L
a
g
r
a
n
g
e
Lagrange
Lagrange乘子, 罚因子被改写为
c
2
\frac{c}{2}
2c.
由最优性一阶必要条件可知,
∃
μ
∗
,
s
.
t
.
(
x
∗
,
μ
∗
)
\exists \boldsymbol \mu^*,s.t. (\boldsymbol x^*,\boldsymbol \mu^*)
∃μ∗,s.t.(x∗,μ∗)为
L
(
x
,
μ
)
L(\boldsymbol x,\boldsymbol \mu)
L(x,μ)的稳定点, 即
∇
x
L
(
x
∗
,
μ
∗
)
=
0
\nabla_xL(\boldsymbol x^*,\boldsymbol \mu^*)=0
∇xL(x∗,μ∗)=0. 又因为附加项
c
2
∑
i
=
1
p
[
h
i
(
x
)
]
2
\frac{c}{2}\sum_{i=1}^p[h_i(x)]^2
2c∑i=1p[hi(x)]2在
x
∗
x^*
x∗梯度为0, 因此有
∇
x
φ
(
x
∗
,
μ
∗
)
=
0.
\nabla_x\varphi(\boldsymbol x^*,\boldsymbol \mu^*)=0.
∇xφ(x∗,μ∗)=0.
说明
x
∗
x^*
x∗是
φ
(
x
∗
,
μ
∗
)
\varphi(\boldsymbol x^*,\boldsymbol \mu^*)
φ(x∗,μ∗)稳定点. 则问题进一步转化为, 对某个
μ
∗
\boldsymbol \mu^*
μ∗, 求
φ
(
x
∗
,
μ
∗
)
\varphi(\boldsymbol x^*,\boldsymbol \mu^*)
φ(x∗,μ∗)的无约束极小点.
求解思路: 首先给定一个足够大的正数 c c c, 在迭代过程中逐步调整 μ ( k ) \boldsymbol \mu^{(k)} μ(k).
假设已经求得
μ
(
k
)
\boldsymbol \mu^{(k)}
μ(k), 求解
min
φ
(
x
,
μ
(
k
)
)
\min\varphi(\boldsymbol x,\boldsymbol \mu^{(k)})
minφ(x,μ(k))得最优解
x
(
k
)
\boldsymbol x^{(k)}
x(k), 则有
∇
x
φ
(
x
(
k
)
,
μ
(
k
)
)
=
∇
f
(
x
(
k
)
)
+
∑
i
=
1
p
μ
i
(
k
)
∇
h
i
(
x
(
k
)
)
+
c
∑
i
=
1
p
h
i
(
x
(
k
)
)
∇
h
i
(
x
(
k
)
)
=
0.
\nabla_x\varphi(\boldsymbol x^{(k)},\boldsymbol \mu^{(k)})=\nabla f(\boldsymbol x^{(k)})+\sum_{i=1}^p\mu_i^{(k)} \nabla h_i(\boldsymbol x^{(k)})+c\sum_{i=1}^p h_i(\boldsymbol x^{(k)})\nabla h_i(\boldsymbol x^{(k)})=0.
∇xφ(x(k),μ(k))=∇f(x(k))+i=1∑pμi(k)∇hi(x(k))+ci=1∑phi(x(k))∇hi(x(k))=0.
即
∇
f
(
x
(
k
)
)
+
∑
i
=
1
p
(
μ
i
(
k
)
+
c
h
i
(
x
(
k
)
)
∇
h
i
(
x
(
k
)
)
=
0.
\nabla f(\boldsymbol x^{(k)})+\sum_{i=1}^p(\mu_i^{(k)} +ch_i(\boldsymbol x^{(k)})\nabla h_i(\boldsymbol x^{(k)})=0.
∇f(x(k))+i=1∑p(μi(k)+chi(x(k))∇hi(x(k))=0.
将其与
∇
L
(
x
(
k
)
,
μ
(
k
)
)
\nabla L(\boldsymbol x^{(k)},\boldsymbol \mu^{(k)})
∇L(x(k),μ(k))比较可得
μ
i
(
k
+
1
)
=
μ
i
(
k
)
+
c
h
i
(
x
(
k
)
)
,
i
=
1
,
.
.
.
,
p
.
\mu_i^{(k+1)}=\mu_i^{(k)}+ch_i(\boldsymbol x^{(k)}), i=1,...,p.
μi(k+1)=μi(k)+chi(x(k)),i=1,...,p.
迭代终止条件?
**Theorem ** 设 x ( k ) \boldsymbol x^{(k)} x(k)是 min φ ( x , μ ( k ) ) \min\varphi(\boldsymbol x,\boldsymbol \mu^{(k)}) minφ(x,μ(k))的最优解, 则 x ( k ) \boldsymbol x^{(k)} x(k)是原约束优化问题的最优解 ⇔ h i ( x ( k ) ) = 0 , i = 1 , . . . , p . \Leftrightarrow h_i(\boldsymbol x^{(k)})=0,i=1,...,p. ⇔hi(x(k))=0,i=1,...,p.
因此, 迭代终止条件可取为: 给定计算精度 ε > 0 , \varepsilon>0, ε>0, 若 x ( k ) \boldsymbol x^{(k)} x(k)满足 ∥ h ( x ( k ) ) ∥ < ε \|h(\boldsymbol x^{(k)})\|<\varepsilon ∥h(x(k))∥<ε, 则停止迭代, 输出最优解 x ( k ) \boldsymbol x^{(k)} x(k). 此外, 若迭代过程中, μ ( k ) \boldsymbol \mu^{(k)} μ(k)收敛太慢, 可适当增大因子 c c c.
算法流程
步骤1 给定初始点 x ( 0 ) x^{(0)} x(0), 初始乘子向量 μ ( 1 ) \boldsymbol \mu^{(1)} μ(1)(可取 μ ( 1 ) = 0 \boldsymbol \mu^{(1)}=\boldsymbol 0 μ(1)=0), ε > 0 , c > 0 , 0 < r < 1 , α > 1 \varepsilon>0,c>0,0<r<1,\alpha>1 ε>0,c>0,0<r<1,α>1, 令 k = 1 k=1 k=1;
步骤2 以 x ( k − 1 ) \boldsymbol x^{(k-1)} x(k−1)为初始点, 求解 min φ ( x , μ ( k ) ) \min\varphi(\boldsymbol x,\boldsymbol \mu^{(k)}) minφ(x,μ(k)), 得 x ( k ) \boldsymbol x^{(k)} x(k);
步骤3 若 ∥ h ( x ( k ) ) ∥ < ε \|h(\boldsymbol x^{(k)})\|<\varepsilon ∥h(x(k))∥<ε, 迭代终止, x ( k ) \boldsymbol x^{(k)} x(k)为最优解; 否则, 计算 β = ∥ h ( x ( k ) ) ∥ ∥ x ( k − 1 ) ∥ \beta=\frac{\|h(\boldsymbol x^{(k)})\|}{\|\boldsymbol x^{(k-1)}\|} β=∥x(k−1)∥∥h(x(k))∥, 若 β > r \beta> r β>r, 则 c = α c c=\alpha c c=αc;
步骤4 μ i ( k + 1 ) = μ i ( k − 1 ) + c h i ( x ( k ) ) , i = 1 , . . . , p + 1 \mu_i^{(k+1)}=\mu_i^{(k-1)}+ch_i(\boldsymbol x^{(k)}), i=1,...,p+1 μi(k+1)=μi(k−1)+chi(x(k)),i=1,...,p+1, 令 k = k + 1 k=k+1 k=k+1, 返回步骤1.
Rockafellar乘子法
Rockafellar将乘子法推广到不等式约束的优化问题
min
f
(
x
)
s
.
t
.
g
i
(
x
)
≥
0
,
i
=
1
,
.
.
.
,
p
.
\begin{align*} & \min f(x)\\ & s.t. g_i(x)\ge 0,i=1,...,p. \end{align*}
minf(x)s.t.gi(x)≥0,i=1,...,p.
通过引入松弛变量
z
i
(
i
=
1
,
.
.
.
,
p
)
z_i(i=1,...,p)
zi(i=1,...,p), 将不等式约束转化为等式约束
g
i
(
x
)
−
z
i
2
=
0
,
i
=
1
,
.
.
.
,
p
.
g_i(x)-z_i^2=0,i=1,...,p.
gi(x)−zi2=0,i=1,...,p.
考虑其对应的增广
L
a
g
r
a
n
g
e
Lagrange
Lagrange函数
Φ
(
x
,
z
,
μ
)
=
f
(
x
)
+
∑
i
=
1
p
μ
i
[
g
i
(
x
)
−
z
i
2
]
+
c
2
∑
i
=
1
p
[
g
i
(
x
)
−
z
i
2
]
2
.
\Phi(\boldsymbol x,\boldsymbol z,\boldsymbol \mu)=f(\boldsymbol x)+\sum_{i=1}^p\mu_i[g_i(\boldsymbol x)-z_i^2]+\frac{c}{2}\sum_{i=1}^p[g_i(\boldsymbol x)-z_i^2]^2.
Φ(x,z,μ)=f(x)+i=1∑pμi[gi(x)−zi2]+2ci=1∑p[gi(x)−zi2]2.
将
Φ
(
x
,
z
,
μ
)
\Phi(\boldsymbol x,\boldsymbol z,\boldsymbol \mu)
Φ(x,z,μ)关于
z
\boldsymbol z
z求极小,
φ
(
x
,
μ
)
=
min
z
Φ
(
x
,
z
,
μ
)
,
∇
z
Φ
(
x
,
z
,
μ
)
=
0
,
\varphi(\boldsymbol x,\boldsymbol \mu)=\min_{\boldsymbol z}\Phi(\boldsymbol x,\boldsymbol z,\boldsymbol \mu),\nabla_{\boldsymbol z}\Phi(\boldsymbol x,\boldsymbol z,\boldsymbol \mu)=0,
φ(x,μ)=zminΦ(x,z,μ),∇zΦ(x,z,μ)=0,
得
z
i
[
c
z
i
2
−
(
μ
i
+
c
g
i
(
x
)
)
]
=
0
,
i
=
1
,
.
.
.
,
p
.
z_i[cz_i^2-(\mu_i+cg_i(\boldsymbol x))]=0,i=1,...,p.
zi[czi2−(μi+cgi(x))]=0,i=1,...,p.
若
μ
i
+
c
g
i
(
x
)
≤
0
\mu_i+cg_i(\boldsymbol x)\le 0
μi+cgi(x)≤0, 则
z
i
2
=
0
z_i^2=0
zi2=0; 若
μ
i
+
c
g
i
(
x
)
>
0
\mu_i+cg_i(\boldsymbol x)> 0
μi+cgi(x)>0, 则
z
i
2
=
1
c
(
μ
i
+
c
g
i
(
x
)
)
z_i^2=\frac{1}{c}(\mu_i+cg_i(x))
zi2=c1(μi+cgi(x)), 即
g
i
(
x
)
−
z
i
2
=
{
g
i
(
x
)
,
μ
i
+
c
g
i
(
x
)
≤
0
,
−
μ
i
c
,
μ
i
+
c
g
i
(
x
)
>
0.
g_i(\boldsymbol x)-z_i^2= \begin{cases} g_i(\boldsymbol x),\mu_i+cg_i(\boldsymbol x)\le 0,\\ -\frac{\mu_i}{c},\mu_i+cg_i(\boldsymbol x)> 0. \end{cases}
gi(x)−zi2={gi(x),μi+cgi(x)≤0,−cμi,μi+cgi(x)>0.
当
μ
i
+
c
g
i
(
x
)
≤
0
\mu_i+cg_i(\boldsymbol x)\le 0
μi+cgi(x)≤0时,
μ
i
[
g
i
(
x
)
−
z
i
2
]
+
c
2
[
g
i
(
x
)
−
z
i
2
]
2
=
μ
i
g
i
(
x
)
+
c
2
[
g
i
(
x
)
]
2
=
1
2
c
[
(
μ
i
+
c
g
i
(
x
)
)
2
−
μ
i
2
]
,
\mu_i[g_i(\boldsymbol x)-z_i^2]+\frac{c}{2}[g_i(\boldsymbol x)-z_i^2]^2=\mu_ig_i(\boldsymbol x)+\frac{c}{2}[g_i(\boldsymbol x)]^2=\frac{1}{2c}[(\mu_i+cg_i(\boldsymbol x))^2-\mu_i^2],
μi[gi(x)−zi2]+2c[gi(x)−zi2]2=μigi(x)+2c[gi(x)]2=2c1[(μi+cgi(x))2−μi2],
当
μ
i
+
c
g
i
(
x
)
>
0
\mu_i+cg_i(\boldsymbol x)> 0
μi+cgi(x)>0时,
μ
i
[
g
i
(
x
)
−
z
i
2
]
+
c
2
[
g
i
(
x
)
−
z
i
2
]
2
=
−
μ
i
2
c
+
c
2
(
−
μ
i
c
)
2
=
−
1
2
c
μ
i
2
.
\mu_i[g_i(\boldsymbol x)-z_i^2]+\frac{c}{2}[g_i(\boldsymbol x)-z_i^2]^2=-\frac{\mu_i^2}{c}+\frac{c}{2}(-\frac{\mu_i}{c})^2=-\frac{1}{2c}\mu_i^2.
μi[gi(x)−zi2]+2c[gi(x)−zi2]2=−cμi2+2c(−cμi)2=−2c1μi2.
故
φ
(
x
,
μ
)
=
f
(
x
)
+
1
2
c
∑
i
=
1
p
{
[
min
(
0
,
μ
i
+
c
g
i
(
x
)
)
]
2
−
μ
i
2
}
.
\varphi(\boldsymbol x,\boldsymbol \mu)=f(\boldsymbol x)+\frac{1}{2c}\sum_{i=1}^p\{[\min(0,\mu_i+cg_i(\boldsymbol x))]^2-\mu_i^2\}.
φ(x,μ)=f(x)+2c1i=1∑p{[min(0,μi+cgi(x))]2−μi2}.
可得乘子迭代公式
μ
i
(
k
+
1
)
=
min
{
0
,
μ
i
(
k
)
+
c
g
i
(
x
(
k
)
)
}
,
\mu_i^{(k+1)}=\min\{0,\mu_i^{(k)}+cg_i(\boldsymbol x^{(k)})\},
μi(k+1)=min{0,μi(k)+cgi(x(k))},
迭代终止准则
(
∑
i
=
1
p
[
min
(
g
i
(
x
)
,
−
μ
i
c
)
]
2
)
1
2
<
ε
.
(\sum_{i=1}^p[\min(g_i(\boldsymbol x),-\frac{\mu_i}{c})]^2)^{\frac{1}{2}}<\varepsilon.
(i=1∑p[min(gi(x),−cμi)]2)21<ε.
应用举例
例1 等式约束问题
求解
min
f
(
x
1
,
x
2
)
=
x
1
2
+
x
2
2
s
.
t
.
x
1
+
x
2
−
2
=
0.
\begin{align*} & \min f(x_1,x_2)=x_1^2+x_2^2\\ & s.t. x_1+x_2-2=0. \end{align*}
minf(x1,x2)=x12+x22s.t.x1+x2−2=0.
易知其最优解为
(
1
,
1
)
T
(1,1)^T
(1,1)T.
解: 增广
L
a
g
r
a
n
g
e
Lagrange
Lagrange函数为
φ
(
x
1
,
x
2
,
μ
,
c
)
=
x
1
2
+
x
2
2
+
μ
(
x
1
+
x
2
−
2
)
+
c
2
(
x
1
+
x
2
−
2
)
2
.
\varphi(x_1,x_2,\mu,c)=x_1^2+x_2^2+\mu(x_1+x_2-2)+\frac{c}{2}(x_1+x_2-2)^2.
φ(x1,x2,μ,c)=x12+x22+μ(x1+x2−2)+2c(x1+x2−2)2.
令
∂
φ
∂
x
1
=
∂
φ
∂
x
2
=
0
\frac{\partial \varphi}{\partial x_1}=\frac{\partial \varphi}{\partial x_2}=0
∂x1∂φ=∂x2∂φ=0, 得
x
1
=
x
2
=
2
c
−
μ
2
c
+
2
.
x_1=x_2=\frac{2c-\mu}{2c+2}.
x1=x2=2c+22c−μ.
则有
μ
(
k
+
1
)
=
1
c
+
1
μ
(
k
)
−
2
c
c
+
1
.
\mu^{(k+1)}=\frac{1}{c+1}\mu^{(k)}-\frac{2c}{c+1}.
μ(k+1)=c+11μ(k)−c+12c.
取
c
=
10
,
c=10,
c=10, 则
μ
(
k
+
1
)
=
1
11
μ
(
k
)
−
20
11
\mu^{(k+1)}=\frac{1}{11}\mu^{(k)}-\frac{20}{11}
μ(k+1)=111μ(k)−1120. 设
μ
(
k
)
→
μ
∗
\mu^{(k)}\rightarrow \mu^*
μ(k)→μ∗, 可得
μ
∗
=
1
11
μ
∗
−
20
11
⇒
u
∗
=
−
2.
\mu^*=\frac{1}{11}\mu^{*}-\frac{20}{11} \Rightarrow u^*=-2.
μ∗=111μ∗−1120⇒u∗=−2.
则原问题最优解
x
∗
=
(
1
,
1
)
T
.
\boldsymbol x^*=(1,1)^T.
x∗=(1,1)T.
例2 不等式约束优化问题
求解
min
f
(
x
)
=
x
1
2
+
x
2
2
s
.
t
.
x
1
−
1
≥
0.
\begin{align*} & \min f(\boldsymbol x)=x_1^2+x_2^2\\ & s.t. x_1-1\ge 0. \end{align*}
minf(x)=x12+x22s.t.x1−1≥0.
易知最优解为
(
1
,
0
)
T
.
(1,0)^T.
(1,0)T.
解: 增广
L
a
g
r
a
n
g
e
Lagrange
Lagrange函数为
φ
(
x
1
,
x
2
,
μ
,
c
)
=
x
1
2
+
x
2
2
+
1
2
c
{
[
min
(
0
,
μ
+
c
(
x
1
−
1
)
)
]
2
−
μ
2
}
=
{
x
1
2
+
x
2
2
+
μ
(
x
1
−
1
)
+
c
2
(
x
1
−
1
)
2
,
x
1
≤
1
−
μ
c
,
x
1
2
+
x
2
2
−
μ
2
2
c
,
x
1
>
1
−
μ
c
.
\varphi(x_1,x_2,\mu,c)=x_1^2+x_2^2+\frac{1}{2c}\{[\min (0,\mu+c(x_1-1))]^2-\mu^2\}\\= \begin{cases} & x_1^2+x_2^2+\mu(x_1-1)+\frac{c}{2}(x_1-1)^2, x_1\le 1-\frac{\mu}{c},\\ & x_1^2+x_2^2-\frac{\mu^2}{2c},x_1> 1-\frac{\mu}{c}. \end{cases}
φ(x1,x2,μ,c)=x12+x22+2c1{[min(0,μ+c(x1−1))]2−μ2}={x12+x22+μ(x1−1)+2c(x1−1)2,x1≤1−cμ,x12+x22−2cμ2,x1>1−cμ.
∂ φ ∂ x 1 = { 2 x 1 + μ + c ( x 1 − 1 ) , x 1 ≤ 1 − μ c 2 x 1 , x 1 > 1 − μ c , ∂ φ ∂ x 2 = 2 x 2 . \frac{\partial \varphi}{\partial x_1}= \begin{cases} 2x_1+\mu+c(x_1-1),x_1\le 1-\frac{\mu}{c}\\ 2x_1,x_1> 1-\frac{\mu}{c} \end{cases} , \frac{\partial \varphi}{\partial x_2}=2x_2. ∂x1∂φ={2x1+μ+c(x1−1),x1≤1−cμ2x1,x1>1−cμ,∂x2∂φ=2x2.
令
∇
φ
(
x
,
μ
)
=
0
\nabla\varphi(\boldsymbol x,\boldsymbol \mu)=0
∇φ(x,μ)=0, 得极小点
x
1
=
c
−
μ
c
+
2
,
x
2
=
0.
x_1=\frac{c-\mu}{c+2},x_2=0.
x1=c+2c−μ,x2=0.
取
c
=
4
,
c=4,
c=4,有
x
(
k
)
=
(
4
−
μ
(
k
)
6
,
0
)
T
,
μ
(
k
+
1
)
=
min
{
0
,
μ
(
k
)
+
4
(
x
1
(
k
)
−
1
)
}
=
μ
(
k
)
−
4
3
.
\begin{align*} & \boldsymbol x^{(k)}=(\frac{4-\mu^{(k)}}{6},0)^T,\\ & \mu^{(k+1)}=\min\{0,\mu^{(k)}+4(x_1^{(k)}-1)\}=\frac{\mu^{(k)}-4}{3}. \end{align*}
x(k)=(64−μ(k),0)T,μ(k+1)=min{0,μ(k)+4(x1(k)−1)}=3μ(k)−4.
令
k
→
+
∞
,
μ
(
k
)
→
−
2
,
x
(
k
)
→
(
1
,
0
)
T
=
x
∗
k\rightarrow+\infty, \mu^{(k)}\rightarrow -2, \boldsymbol x^{(k)}\rightarrow (1,0)^T=x^*
k→+∞,μ(k)→−2,x(k)→(1,0)T=x∗.
Code
以例1中的等式约束问题为练习, 给出简易MATLAB代码, 可以看出数值结果与理论相符.
% 等式约束的乘子法
function multph
global c miu
x0=[2,1]';
x1=x0;
miu=0;
eps=10^(-4);
c=10;
r=0.4;
a=2;
k=1;
while norm(h(x0))>=eps
x1=fminsearch('phi',x0);
beta=norm(h(x1))/norm(h(x0));
x0=x1;
if beta>r
c=a*c;
end
miu=miu+c*h(x1);
k=k+1;
end
format long
disp('最优解')
disp(x1)
disp('乘子')
disp(miu)
disp('迭代次数')
disp(k)
disp('终止条件')
disp(h(x0))
end
function r=h(x)
% 等式约束对应函数
r=x(1)+x(2)-2;
end
function r=phi(x)
global miu c
r=x(1)^2+x(2)^2+miu*(x(1)+x(2)-2)+c/2*(x(1)+x(2)-2)^2;
end
最优解
1.000053801333254
0.999968661617259
乘子
-1.999646326786757
迭代次数
6
终止条件
2.246295051211433e-05