基本介绍
考虑一般的约束优化问题
min
f
(
x
)
s
.
t
.
g
i
(
x
)
≤
0
,
i
=
1
,
2
,
.
.
.
,
m
,
h
j
(
x
)
=
0
,
j
=
1
,
2
,
.
.
.
,
p
,
x
∈
X
⊂
R
n
,
x
=
(
x
1
,
x
2
,
.
.
.
,
x
n
)
T
.
\begin{align*} &\min f(\mathbf{x})\\ &s.t.\quad g_i(\mathbf{x})\le 0, i=1,2,...,m,\\ &\quad\qquad h_j(\mathbf{x})=0, j=1,2,...,p,\\ &\quad\qquad\mathbf{x}\in X\subset\mathbf{R^n},\mathbf{x}=(x_1,x_2,...,x_n)^T. \end{align*}
minf(x)s.t.gi(x)≤0,i=1,2,...,m,hj(x)=0,j=1,2,...,p,x∈X⊂Rn,x=(x1,x2,...,xn)T.
其中
f
,
g
i
,
h
j
∈
C
1
f,g_i,h_j\in C^1
f,gi,hj∈C1.
惩罚函数法的基本思想是:把约束问题转化为一个或一系列无约束问题求解, 所以也称为序列无约束极小化技术(Sequential Unconstrained Minimization Technique), 简称SUMT法.
具体思路:根据约束的特点,构造某种惩罚函数加入到目标函数中建立无约束问题,利用惩罚策略,对于无约束问题求解过程中企图违反约束的迭代点给予很大的目标函数值,迫使无约束问题的极小点无限靠近可行域或保持在可行域内移动,直至迭代点列收敛到原约束问题极小点。
构造方法
下面以仅含等式约束的优化问题为例给出相应的构造方法:
min
f
(
x
)
,
x
∈
R
n
s
.
t
c
i
(
x
)
=
0
,
i
∈
E
=
{
1
,
.
.
.
,
l
}
.
\begin{align*} & \min f(\mathbf{x}),\mathbf{x}\in \mathbf{R^n}\\ & s.t \quad c_i(\mathbf{x})=0,i\in E=\{1,...,l\}. \end{align*}
minf(x),x∈Rns.tci(x)=0,i∈E={1,...,l}.
构造形如
F
(
x
,
M
)
=
f
(
x
)
+
M
∑
i
=
1
l
∣
c
i
(
x
)
∣
β
,
β
≥
1
F(\mathbf{x},M)=f(\mathbf{x})+M\sum_{i=1}^l|c_i(x)|^{\beta}, \beta\ge1
F(x,M)=f(x)+Mi=1∑l∣ci(x)∣β,β≥1
的函数, 其中
M
>
0
M>0
M>0为参数, 称为罚因子.
若记原约束问题的可行域为 D D D, 对于惩罚项 p ( x ) = ∑ i = 1 l ∣ c i ( x ) ∣ β , β ≥ 1 p(\mathbf{x})=\sum_{i=1}^l|c_i(x)|^{\beta},\beta\ge 1 p(x)=∑i=1l∣ci(x)∣β,β≥1,
- 当 x \mathbf{x} x为可行解, 即 x ∈ D \mathbf{x}\in D x∈D时, c i ( x ) = 0 , p ( x ) = 0 , F ( x , M ) = f ( x ) c_i(x)=0,p(x)=0,F(\mathbf{x},M)=f(x) ci(x)=0,p(x)=0,F(x,M)=f(x), 不受惩罚;
- 当 x \mathbf{x} x不是可行解时, 即$\mathbf{x}\notin $D时, c i ( x ) ≠ 0 , p ( x ) > 0 , F ( x , M ) = f ( x ) + p ( x ) > 0 c_i(x)\ne 0,p(x)>0, F(\mathbf{x},M)=f(x)+p(x)>0 ci(x)=0,p(x)>0,F(x,M)=f(x)+p(x)>0, 即约束条件被破坏是一种惩罚, 且 M M M越大, 惩罚越重.
此时, 为使 F ( x , M ) F(\mathbf{x},M) F(x,M)取得极小值, p ( x ) p(x) p(x)应充分小, 即 F ( x , M ) F(\mathbf{x},M) F(x,M)的极小点应充分逼近可行域, 当然也希望它能够逼近最优解.
从上述过程中, 我们可以体会到惩罚项及罚函数的意义, 即惩罚破坏约束的迭代点从而使目标函数的极小点逼近可行域或在可行域中移动.
此外, 我们还可以得出惩罚项构造要满足的条件:
- p ( x ) p(\mathbf{x}) p(x)连续;
- ∀ x ∈ R n , p ( x ) ≥ 0 \forall \mathbf{x}\in\mathbf{R^n}, p(\mathbf{x})\ge 0 ∀x∈Rn,p(x)≥0;
- ∀ x ∈ S , p ( x ) = 0 \forall \mathbf{x}\in S, p(\mathbf{x})=0 ∀x∈S,p(x)=0.
下面考虑不等式约束的优化问题:
min
f
(
x
)
,
x
∈
R
n
s
.
t
.
c
i
(
x
)
≥
0
,
i
∈
I
=
{
1
,
2
,
.
.
.
,
m
}
.
\begin{align*} & \min f(\mathbf{x}), \mathbf{x}\in \mathbf{R^n}\\ & s.t. \quad c_i(\mathbf{x})\ge 0, i\in I=\{1,2,...,m\}. \end{align*}
minf(x),x∈Rns.t.ci(x)≥0,i∈I={1,2,...,m}.
类似地构造如下函数
F
(
x
,
M
)
=
f
(
x
)
+
M
p
(
x
)
,
M
>
0
,
F(\mathbf{x},M)=f(\mathbf{x})+Mp(\mathbf{x}),\quad M>0,
F(x,M)=f(x)+Mp(x),M>0,
其中
p
(
x
)
=
{
0
,
c
i
(
x
)
≥
0
,
∑
i
=
1
m
∣
c
i
(
x
)
∣
α
,
α
≥
1
,
c
i
(
x
)
<
0.
p(\mathbf{x})= \begin{cases} & 0,\quad c_i(\mathbf{x})\ge 0,\\ & \sum_{i=1}^{m}|c_i(\mathbf{x})|^{\alpha}, \alpha\ge 1, c_i(\mathbf{x})<0. \end{cases}
p(x)={0,ci(x)≥0,∑i=1m∣ci(x)∣α,α≥1,ci(x)<0.
也可以写成
p
(
x
)
=
∑
i
=
1
m
∣
min
(
0
,
c
i
(
x
)
)
∣
α
=
∑
i
=
1
m
(
∣
c
i
(
x
)
∣
−
c
i
(
x
)
2
)
α
,
α
≥
1.
p(\mathbf{x})=\sum_{i=1}^m|\min(0,c_i(x))|^\alpha=\sum_{i=1}^m(\frac{|c_i(x)|-c_i(x)}{2})^\alpha, \quad \alpha\ge 1.
p(x)=i=1∑m∣min(0,ci(x))∣α=i=1∑m(2∣ci(x)∣−ci(x))α,α≥1.
同样地, 惩罚项仍符合前述的惩罚策略.
最后, 对于一般的约束优化问题
min
f
(
x
)
s
.
t
.
c
i
(
x
)
=
0
,
i
∈
E
=
1
,
2
,
.
.
.
,
l
,
c
i
(
x
)
≥
0
,
i
∈
I
=
l
+
1
,
.
.
.
,
m
.
\begin{align*} &\min f(\mathbf{x})\\ & s.t. \quad c_i(\mathbf{x})=0, i\in E={1,2,...,l},\\ & \quad\qquad c_i(\mathbf{x})\ge 0,i\in I={l+1,...,m}. \end{align*}
minf(x)s.t.ci(x)=0,i∈E=1,2,...,l,ci(x)≥0,i∈I=l+1,...,m.
其可行域为
D
=
{
x
∈
R
n
∣
c
i
(
x
)
=
0
,
i
∈
E
;
c
i
(
x
)
≥
0
,
i
∈
I
}
D=\{\mathbf{x}\in \mathbf{R^n}|c_i(x)=0,i\in E; c_i(x)\ge 0,i\in I\}
D={x∈Rn∣ci(x)=0,i∈E;ci(x)≥0,i∈I}.
构造如下函数
F
(
x
,
M
)
=
f
(
x
)
+
M
p
(
x
)
,
M
>
0
,
(
1
)
F(\mathbf{x},M)=f(\mathbf{x})+Mp(\mathbf{x}), M>0,\quad(1)
F(x,M)=f(x)+Mp(x),M>0,(1)
其中
p
(
x
)
=
∑
i
=
1
l
∣
c
i
(
x
)
∣
β
+
∑
j
=
l
+
1
m
∣
min
(
0
,
c
j
(
x
)
)
∣
α
,
α
≥
1
,
β
≥
1.
(
2
)
p(\mathbf{x})=\sum_{i=1}^l|c_i(\mathbf{x})|^\beta+\sum_{j=l+1}^m|\min(0,c_j(\mathbf{x}))|^\alpha, \alpha\ge1,\beta\ge 1.\quad(2)
p(x)=i=1∑l∣ci(x)∣β+j=l+1∑m∣min(0,cj(x))∣α,α≥1,β≥1.(2)
显然, 当
x
∈
D
\mathbf{x}\in D
x∈D时,
p
(
x
)
=
0
p(\mathbf{x})=0
p(x)=0; 当
x
∉
D
\mathbf{x}\notin D
x∈/D时,
p
(
x
)
>
0
p(\mathbf{x})>0
p(x)>0.
式 ( 1 ) (1) (1)称为约束问题的增广目标函数, ( 2 ) (2) (2)是一般约束问题的罚函数, M > 0 M>0 M>0是罚因子, 通常取 α = β = 2 \alpha=\beta=2 α=β=2.
也就是说, 一般约束问题的求解转化为求增广目标函数的无约束极小, 即 min F ( x , M k ) , { M k } \min F(\mathbf{x},M_k),\{M_k\} minF(x,Mk),{Mk}为正的数列, 且 { M k } → ∞ \{M_k\}\rightarrow \infty {Mk}→∞. 此外, 还要注意的是, 无约束问题最优解的极限是原问题的最优解.
应用举例
例1
求解约束问题
min
f
(
x
)
=
(
x
1
−
3
)
2
+
(
x
2
−
2
)
2
s
.
t
.
h
(
x
)
=
x
1
+
x
2
−
4
=
0.
\begin{align*} & \min \quad f(x)=(x_1-3)^2+(x_2-2)^2\\ & s.t. \quad h(x)=x_1+x_2-4=0. \end{align*}
minf(x)=(x1−3)2+(x2−2)2s.t.h(x)=x1+x2−4=0.
解:
F
(
x
,
M
)
=
(
x
1
−
3
)
2
+
(
x
2
−
2
)
2
+
M
(
x
1
+
x
2
−
4
)
2
.
F(\mathbf{x},M)=(x_1-3)^2+(x_2-2)^2+M(x_1+x_2-4)^2.
F(x,M)=(x1−3)2+(x2−2)2+M(x1+x2−4)2.
则有
∂
F
∂
x
1
=
2
(
x
1
−
3
)
+
2
M
(
x
1
+
x
2
−
4
)
,
∂
F
∂
x
2
=
2
(
x
2
−
2
)
+
2
M
(
x
1
+
x
2
−
4
)
.
\begin{align*} & \frac{\partial F}{\partial x_1}=2(x_1-3)+2M(x_1+x_2-4),\\ & \frac{\partial F}{\partial x_2}=2(x_2-2)+2M(x_1+x_2-4). \end{align*}
∂x1∂F=2(x1−3)+2M(x1+x2−4),∂x2∂F=2(x2−2)+2M(x1+x2−4).
令
∂
F
∂
x
1
=
0
,
∂
F
∂
x
2
=
0
\frac{\partial F}{\partial x_1}=0,\frac{\partial F}{\partial x_2}=0
∂x1∂F=0,∂x2∂F=0, 得
x
1
=
5
M
+
3
2
M
+
1
,
x
2
=
3
M
+
2
2
M
+
1
.
x_1=\frac{5M+3}{2M+1},x_2=\frac{3M+2}{2M+1}.
x1=2M+15M+3,x2=2M+13M+2.
又由
∂
2
F
∂
x
1
2
=
2
(
M
+
1
)
,
∂
2
F
∂
x
2
2
=
2
(
M
+
1
)
,
∂
2
F
∂
x
1
∂
x
2
=
2
M
\frac{\partial^2 F}{\partial x_1^2}=2(M+1),\frac{\partial^2 F}{\partial x_2^2}=2(M+1),\frac{\partial^2 F}{\partial x_1\partial x_2}=2M
∂x12∂2F=2(M+1),∂x22∂2F=2(M+1),∂x1∂x2∂2F=2M,可得
∇
2
F
=
[
2
(
M
+
1
)
2
M
2
M
2
(
M
+
1
)
]
.
\nabla^2 F= \begin{bmatrix} 2(M+1)& 2M\\ 2M & 2(M+1) \end{bmatrix} .
∇2F=[2(M+1)2M2M2(M+1)].
M
>
0
⇒
∇
2
F
M>0\Rightarrow\nabla^2 F
M>0⇒∇2F正定. 因此,
F
(
x
,
M
)
F(\mathbf{x},M)
F(x,M)在
(
5
M
+
3
2
M
+
1
,
3
M
+
2
2
M
+
1
)
T
(\frac{5M+3}{2M+1},\frac{3M+2}{2M+1})^T
(2M+15M+3,2M+13M+2)T取得极小值. 令
M
→
+
∞
M\rightarrow +\infty
M→+∞, 则原约束问题的最优解为
x
∗
=
lim
M
→
+
∞
x
(
M
)
=
(
5
2
,
3
2
)
T
.
x^{*}=\lim_{M\rightarrow+\infty} \mathbf{x}(M)=(\frac{5}{2},\frac{3}{2})^T.
x∗=M→+∞limx(M)=(25,23)T.
例2
求解约束问题
min
f
(
x
)
=
x
1
2
+
x
2
2
s
.
t
.
x
1
+
1
≤
0.
\begin{align*} & \min \quad f(x)=x_1^2+x_2^2\\ & s.t. x_1+1\le 0. \end{align*}
minf(x)=x12+x22s.t.x1+1≤0.
解:
首先要将约束条件改写成
−
x
1
−
1
≥
0
-x_1-1\ge 0
−x1−1≥0!
F
(
x
,
M
)
=
x
1
2
+
x
2
2
+
M
[
min
(
0
,
−
x
1
−
1
)
]
2
=
{
x
1
2
+
x
2
2
,
x
1
+
1
≤
0
,
x
1
2
+
x
2
2
+
M
(
x
1
+
1
)
2
,
x
1
+
1
>
0.
F(\mathbf{x},M)=x_1^2+x_2^2+M[\min(0,-x_1-1)]^2= \begin{cases} x_1^2+x_2^2, x_1+1\le 0,\\ x_1^2+x_2^2+M(x_1+1)^2,x_1+1>0. \end{cases}
F(x,M)=x12+x22+M[min(0,−x1−1)]2={x12+x22,x1+1≤0,x12+x22+M(x1+1)2,x1+1>0.
故
∂
F
∂
x
1
=
{
2
x
1
,
x
1
<
−
1
,
2
x
1
+
2
M
(
x
1
+
1
)
,
x
1
>
−
1.
∂
F
∂
x
2
=
2
x
2
.
\frac{\partial F}{\partial x_1}= \begin{cases} 2x_1,x_1<-1,\\ 2x_1+2M(x_1+1),x_1>-1. \end{cases} \frac{\partial F}{\partial x_2}=2x_2.
∂x1∂F={2x1,x1<−1,2x1+2M(x1+1),x1>−1.∂x2∂F=2x2.
令
∂
F
∂
x
1
=
0
,
∂
F
∂
x
2
=
0
\frac{\partial F}{\partial x_1}=0,\frac{\partial F}{\partial x_2}=0
∂x1∂F=0,∂x2∂F=0, 得
x
1
=
−
M
M
+
1
,
x
2
=
0.
x_1=\frac{-M}{M+1},x_2=0.
x1=M+1−M,x2=0.
类似地, 有
M
>
0
⇒
∇
2
F
M>0\Rightarrow\nabla^2 F
M>0⇒∇2F正定. 因此,
F
(
x
,
M
)
F(\mathbf{x},M)
F(x,M)在
(
−
M
M
+
1
,
0
)
T
(\frac{-M}{M+1},0)^T
(M+1−M,0)T取得极小值. 令
M
→
+
∞
M\rightarrow +\infty
M→+∞, 则原约束问题的最优解为
x
∗
=
lim
M
→
+
∞
x
(
M
)
=
(
−
1
,
0
)
T
.
x^{*}=\lim_{M\rightarrow+\infty} \mathbf{x}(M)=(-1,0)^T.
x∗=M→+∞limx(M)=(−1,0)T.
且
F
(
x
,
M
)
=
(
−
M
M
+
1
)
2
+
M
(
1
M
+
1
)
2
=
M
M
+
1
→
f
(
x
∗
)
=
1.
F(\mathbf{x},M)=(-\frac{M}{M+1})^2+M(\frac{1}{M+1})^2=\frac{M}{M+1}\rightarrow f(x^{*})=1.
F(x,M)=(−M+1M)2+M(M+11)2=M+1M→f(x∗)=1.
Remark: 虽然
x
(
M
)
→
x
∗
(
M
→
+
∞
)
\mathbf{x}(M)\rightarrow x^{*}(M \rightarrow +\infty)
x(M)→x∗(M→+∞), 但
x
(
M
)
\mathbf{x}(M)
x(M)往往不满足约束条件, 如在例1中
x
1
(
M
)
+
x
2
(
M
)
=
4
M
2
M
+
1
≠
1
x_1(M)+x_2(M)=\frac{4M}{2M+1}\ne 1
x1(M)+x2(M)=2M+14M=1, 在例2中
x
1
(
M
)
=
−
M
M
+
1
>
−
1
x_1(M)=-\frac{M}{M+1}>-1
x1(M)=−M+1M>−1, 且
x
(
M
)
\mathbf{x}(M)
x(M)都从可行域外部趋向于
x
∗
x^*
x∗, 因此惩罚函数法也称为外罚函数法.
算法流程
已知约束问题, 取控制误差 ε > 0 \varepsilon>0 ε>0和罚因子放大系数 c > 1 ( e . g . ε = 1 0 − 4 , c = 10 ) c>1(e.g. \varepsilon=10^{-4},c=10) c>1(e.g.ε=10−4,c=10).
步骤1 给定初始点 x 0 x_0 x0(可以不在可行域内)和初始惩罚因子 M 1 = 1 M_1=1 M1=1, 令 k = 1 k=1 k=1.
步骤2 以
x
k
−
1
x_{k-1}
xk−1为初始点求无约束问题
min
F
(
x
,
M
k
)
=
f
(
x
)
+
M
k
p
(
x
)
\min F(\mathbf{x},M_k)=f(\mathbf{x})+M_kp(x)
minF(x,Mk)=f(x)+Mkp(x)
得最优解
x
k
=
x
(
M
k
)
\mathbf{x}_k=\mathbf{x}(M_k)
xk=x(Mk).
步骤3 若 M k p ( x k ) < ε M_kp(\mathbf{x_k})<\varepsilon Mkp(xk)<ε, 则以 x k \mathbf{x}_k xk为近似最优解, 停止; 否则令 M k + 1 = c M k , k = k + 1 M_{k+1}=cM_k,k=k+1 Mk+1=cMk,k=k+1, 转步骤2.
计算实例
求解约束问题
min
f
(
x
)
=
(
x
1
−
2
)
4
+
(
x
2
−
2
x
1
)
2
s
.
t
.
x
1
2
−
x
2
=
0.
\begin{align*} & \min f(\mathbf{x})=(x_1-2)^4+(x_2-2x_1)^2\\ & s.t. \quad x_1^2-x_2=0. \end{align*}
minf(x)=(x1−2)4+(x2−2x1)2s.t.x12−x2=0.
易知该问题的最优解为
(
2
,
4
)
T
(2,4)^T
(2,4)T.
取
x
0
=
(
2
,
1
)
T
,
M
1
=
0.1
,
c
=
10
,
ε
=
0.01
,
β
=
2
,
\mathbf{x}_0=(2,1)^T,M_1=0.1,c=10,\varepsilon=0.01,\beta=2,
x0=(2,1)T,M1=0.1,c=10,ε=0.01,β=2,求解
min
F
(
x
,
M
)
=
(
x
1
−
2
)
4
+
(
x
2
−
2
x
1
)
2
+
M
k
(
x
1
2
−
x
2
)
2
.
\min F(\mathbf{x},M)=(x_1-2)^4+(x_2-2x_1)^2+M_k(x_1^2-x_2)^2.
minF(x,M)=(x1−2)4+(x2−2x1)2+Mk(x12−x2)2.
经过两次迭代,
M
2
p
(
x
2
)
=
1.805074
×
1
0
−
10
<
ε
M_2p(\mathbf{x}_2)=1.805074\times 10^{-10}<\varepsilon
M2p(x2)=1.805074×10−10<ε, 算法停止. 近似最优解为
x
∗
=
(
1.999998
,
4.000007
)
T
x^*=(1.999998,4.000007)^T
x∗=(1.999998,4.000007)T.
Code(简易版)
% 主程序
function SUMT
global M
x0=[2,1]';
M=0.1;
c=10;
eps=0.01;
k=1;
while M*p(x0)>=eps
x0=fminsearch('Aim',x0);
M=c*M;
k=k+1;
end
format long
disp('最优解:')
disp(x0)
disp('迭代次数')
disp(k)
disp('终止条件')
disp(M*p(x0))
end
function r=p(x)
% 罚函数
r=(x(1)^2-x(2))^2;
end
function r=Aim(x)
global M
r=(x(1)-2)^4+(x(2)-2*x(1))^2+M*p(x);
end
算法缺点及改进
- 每个近似最优解 x ( M k ) \mathbf{x}(M_k) x(Mk)不是可行解. 改进: 内罚函数法.
- 由收敛性知, M k M_k Mk越大越好, 而这会造成 F ( x , M ) F(\mathbf{x},M) F(x,M)的Hessen矩阵条件数越大, 趋向于病态, 给无约束问题求解增加困难, 甚至于无法求解. 改进: 乘子法.
Reference
@book{唐焕文2000实用最优化方法,
title={实用最优化方法.第2版},
author={唐焕文 and 秦学志},
publisher={实用最优化方法.第2版},
year={2000},
}
@book{肖柳青2000实用最优化方法,
title={实用最优化方法},
author={肖柳青 and 周石鹏},
publisher={实用最优化方法},
year={2000},
}