本文中我们考虑如下有约束的一般优化问题的求解方法:
min f ( x ) s. t. c i ( x ) = 0 , i ∈ E = { 1 , 2 , … , l } c i ( x ) ≤ 0 , i ∈ I = { l + 1 , l + 2 , … , l + m } x ∈ R n \begin{aligned} &\min f(x) \\ \text{s. t. } &c_{i}(x) = 0, i\in E=\{1,2,\dots, l\}\\ & c_{i}(x)\leq 0, i\in I = \{l+1, l+2,\dots,l+m\} \\ & x\in \mathbb{R}^{n} \end{aligned} s. t. minf(x)ci(x)=0,i∈E={1,2,…,l}ci(x)≤0,i∈I={l+1,l+2,…,l+m}x∈Rn 其中,可行域 D D D 记为:
D = { x ∣ c i ( x ) = 0 , i ∈ E ; c i ( x ) ≤ 0 , i ∈ I ; x ∈ R n } D=\{x | c_{i}(x)=0, i\in E; c_{i}(x)\leq 0, i\in I; x\in\mathbb{R}^{n}\} D={x∣ci(x)=0,i∈E;ci(x)≤0,i∈I;x∈Rn}
求解约束优化问题要比求解无约束优化问题复杂困难得多。一般来说,求解约束优化问题的方法大致分两类:一类是此文中介绍的直接求解法,另一类是本文中即将介绍的罚函数法。
罚函数法是利用目标函数 f ( x ) f(x) f(x) 和约束函数 c ( x ) c(x) c(x),构造具有惩罚性质的函数 P ( x ) = P ˉ ( f ( x ) , c ( x ) ) P(x)=\bar{P}(f(x), c(x)) P(x)=Pˉ(f(x),c(x)) ,使得原约束优化问题转化为求 P ( x ) P(x) P(x) 最优解的无约束优化问题。以下讨论中,我们假设所有函数都是连续的。
外罚函数是一类不可行点的方法,其基本思想是:在求解约束优化的问题时,通过对不可行的迭代点施加惩罚,并随着迭代点的进展,增大惩罚量,迫使迭代点逐步向可行域靠近。
min f ( x ) , x ∈ R n s. t. c i ( x ) = 0 , i = 1 , 2 , … , l \begin{aligned} &\min f(x), x\in\mathbb{R}^{n} \\ \text{s. t. }& c_{i}(x)=0, i=1,2,\dots,l \end{aligned} s. t. minf(x),x∈Rnci(x)=0,i=1,2,…,l记 P ~ ( x ) = ∑ i = 1 l ∣ c i ( x ) ∣ β , β ≥ 1 \tilde{P}(x)=\sum_{i=1}^{l}|c_{i}(x)|^{\beta},\quad \beta\geq 1 P~(x)=i=1∑l∣ci(x)∣β,β≥1定义如下形式的外罚函数 P ( x , σ ) = f ( x ) + σ P ~ ( x ) = f ( x ) + σ ∑ i = 1 l ∣ c i ( x ) ∣ β , β ≥ 1 \begin{aligned} P(x,\sigma) &= f(x)+\sigma \tilde{P}(x) \\ &= f(x)+\sigma\sum_{i=1}^{l}|c_{i}(x)|^{\beta},\quad \beta\geq 1 \end{aligned} P(x,σ)=f(x)+σP~(x)=f(x)+σi=1∑l∣ci(x)∣β,β≥1其中 σ > 0 \sigma>0 σ>0 是一个参数。显然,当 x x x 为可行点时, P ~ ( x ) = 0 \tilde{P}(x)=0 P~(x)=0 ;当 x x x 不是可行点时 P ~ ( x ) > 0 \tilde{P}(x)>0 P~(x)>0 ,于是 P ( x , σ ) > f ( x ) P(x,\sigma)>f(x) P(x,σ)>f(x) 。特别的,随着 σ \sigma σ 增大, P ( x ) P(x) P(x) 也在增大。所以,要使 P ( x , σ ) P(x,\sigma) P(x,σ) 取到极小值, P ~ ( x ) \tilde{P}(x) P~(x) 应充分小,即 P ( x , σ ) P(x,\sigma) P(x,σ) 的极小点应充分逼近可行域。于是,上述等式约束优化问题转化为无约束优化的问题
min x { P ( x , σ ) = f ( x ) + σ P ~ ( x ) } \min_{x}\{P(x,\sigma)=f(x)+\sigma\tilde{P}(x) \} xmin{P(x,σ)=f(x)+σP~(x)}通常取 β = 2 \beta=2 β=2 。
例 1:求解下列约束优化问题 min { f ( x ) = x 1 + x 2 } s. t. c ( x ) = x 2 − x 1 2 = 0 \begin{aligned}\min\{f(x)=x_{1}+x_{2}\}\\\text{s. t. } c(x)=x_{2}-x_{1}^{2} =0 \end{aligned} min{f(x)=x1+x2}s. t. c(x)=x2−x12=0解:构造外罚函数 P ( x , σ ) = x 1 + x 2 + σ ( x 2 − x 1 2 ) 2 P(x,\sigma)=x_{1}+x_{2}+\sigma(x_{2}-x_{1}^{2})^{2} P(x,σ)=x1+x2+σ(x2−x12)2利用解析法求解 ∂ P ∂ x 1 = 1 − 4 σ x 1 ( x 2 − x 1 2 ) , ∂ P ∂ x 2 = 1 + 2 σ ( x 2 − x 1 2 ) \frac{\partial P}{\partial x_{1}}=1-4\sigma x_{1}(x_{2}-x_{1}^{2}), \frac{\partial P}{\partial x_{2}}=1+2\sigma(x_{2}-x_{1}^{2}) ∂x1∂P=1−4σx1(x2−x12),∂x2∂P=1+2σ(x2−x12)令 ∇ x P ( x , σ ) = 0 \nabla_{x}P(x,\sigma)=0 ∇xP(x,σ)=0得到 x 1 ( σ ) = − 1 2 , x 2 ( σ ) = 1 4 − 1 2 σ x_{1}(\sigma)=-\frac{1}{2}, x_{2}(\sigma)=\frac{1}{4}-\frac{1}{2\sigma} x1(σ)=−21,x2(σ)=41−2σ1再令 σ → + ∞ \sigma\to+\infty σ→+∞得 x ( σ ) = ( − 1 2 , 1 4 ) T = x ∗ P ( x ( σ ) , σ ) = − 1 4 = f ( x ∗ ) \begin{aligned}x(\sigma)=\left(-\frac{1}{2}, \frac{1}{4} \right)^{T}=x^{*} \\ P(x(\sigma), \sigma)=-\frac{1}{4}=f(x^{*})\end{aligned} x(σ)=(−21,41)T=x∗P(x(σ),σ)=−41=f(x∗)
我们考虑如下不等式约束的优化问题
min f ( x ) , x ∈ R n s. t. c i ( x ) ≤ 0 , i = 1 , 2 , … , l \begin{aligned} &\min f(x), x\in\mathbb{R}^{n} \\ \text{s. t. }& c_{i}(x)\leq 0, i=1,2,\dots,l \end{aligned} s. t. minf(x),x∈Rnci(x)≤0,i=1,2,…,l记 P ~ ( x ) = ∑ i = 1 l [ max ( 0 , c i ( x ) ) ] α , α ≥ 1 \tilde{P}(x)=\sum_{i=1}^{l}[\max(0, c_{i}(x))]^{\alpha},\quad \alpha\geq 1 P~(x)=i=1∑l[max(0,ci(x))]α,α≥1定义如下形式的外罚函数
P ( x , σ ) = f ( x ) + σ ∑ i = 1 l [ max ( 0 , c i ( x ) ) ] α α ≥ 1 P(x,\sigma)=f(x)+\sigma\sum_{i=1}^{l}[\max(0, c_{i}(x))]^{\alpha}\quad \alpha\geq 1 P(x,σ)=f(x)+σi=1∑l[max(0,ci(x))]αα≥1此时的外罚函数性质与上一节类似,通常取 α = 2 \alpha=2 α=2 。
考虑一般的约束优化问题
min f ( x ) s. t. c i ( x ) = 0 , i ∈ E = { 1 , 2 , … , l } c i ( x ) ≤ 0 , i ∈ I = { L + 1 , l + 2 , … , l + m } x ∈ R n \begin{aligned} &\min f(x) \\ \text{s. t. } &c_{i}(x) = 0, i\in E=\{1,2,\dots, l\}\\ & c_{i}(x)\leq 0, i\in I = \{L+1, l+2,\dots,l+m\} \\ & x\in \mathbb{R}^{n} \end{aligned} s. t. minf(x)ci(x)=0,i∈E={1,2,…,l}ci(x)≤0,i∈I={L+1,l+2,…,l+m}x∈Rn 记 P ~ ( x ) = ∑ i = 1 l ∣ c i ( x ) ∣ β + ∑ i = 1 l [ max ( 0 , c i ( x ) ) ] α , α ≥ 1 , β ≥ 1 \tilde{P}(x)=\sum_{i=1}^{l}|c_{i}(x)|^{\beta}+\sum_{i=1}^{l}[\max(0, c_{i}(x))]^{\alpha},\quad \alpha\geq 1,\beta\geq 1 P~(x)=i=1∑l∣ci(x)∣β+i=1∑l[max(0,ci(x))]α,α≥1,β≥1类似地,定义如下形式的外罚函数 P ( x , σ ) = f ( x ) + σ ∑ i = 1 l ∣ c i ( x ) ∣ β + ∑ i = 1 l [ max ( 0 , c i ( x ) ) ] α , α ≥ 1 , β ≥ 1 P(x,\sigma)=f(x)+\sigma\sum_{i=1}^{l}|c_{i}(x)|^{\beta}+\sum_{i=1}^{l}[\max(0, c_{i}(x))]^{\alpha},\quad \alpha\geq 1,\beta\geq 1 P(x,σ)=f(x)+σi=1∑l∣ci(x)∣β+i=1∑l[max(0,ci(x))]α,α≥1,β≥1上述罚函数性质与之前的讨论类似。通常 α = β = 2 \alpha=\beta =2 α=β=2。可见,外罚函数的最优解在 σ → + ∞ \sigma\to+\infty σ→+∞的过程中一直在可行域外部取点,直到趋近最优解 x ∗ x^{*} x∗。所以之中方法为外罚函数法,简称外点法; P ( x , σ ) P(x,\sigma) P(x,σ) 为外罚函数,或叫增广目标函数, σ \sigma σ为惩罚因子, P ~ ( x ) \tilde{P}(x) P~(x)为惩罚项。
对于比较复杂的约束,通常采用迭代的方法:
对于外罚函数的算法收敛性与外罚函数的病态性质这里不作讨论。 使用外罚函数法时,选取 σ 1 \sigma_{1} σ1过大,或者 σ k \sigma_{k} σk增长过快可以使算法快速收敛,但很难精确地求解相应的无约束极小问题;反之,可以使求得 P ( x , σ k + 1 ) P(x,\sigma_{k+1}) P(x,σk+1)的极小点变得容易,但收敛太慢。通常取 σ k = 0.1 × 2 k − 1 \sigma_{k}=0.1\times 2^{k-1} σk=0.1×2k−1。
在外罚函数法中,近似最优解一般只能近似地满足约束条件,对于某些实际问题这样的近似最优解释不可接受的。内罚函数法是一类保持严格可行性的方法。其基本思想是:严格要求迭代点在可行域内移动,当迭代点接近可行域边界时,有无穷大的障碍,迫使迭代点返回可行域的内部。
考虑不等式约束的优化问题,可行域内部记为: D 0 = { x ∈ R n ∣ c i ( x ) < 0 , i = 1 , 2 , … , l } D^{0}=\{x\in\mathbb{R}^{n} | c_{i}(x)<0, i=1,2,\dots,l\} D0={x∈Rn∣ci(x)<0,i=1,2,…,l}记 B ( x ) = − ∑ i = 1 l ln ( − c i ( x ) ) B(x)=-\sum_{i=1}^{l}\ln(-c_{i}(x)) B(x)=−i=1∑lln(−ci(x)) 定义如下形式的内罚函数:
P ( x , r ) = f ( x ) + r B ( x ) = f ( x ) − r ∑ i = 1 l ln ( − c i ( x ) ) \begin{aligned}P(x,r) &=f(x)+rB(x)\\ &=f(x)-r\sum_{i=1}^{l}\ln(-c_{i}(x))\end{aligned} P(x,r)=f(x)+rB(x)=f(x)−ri=1∑lln(−ci(x))其中 r > 0 r>0 r>0 是一参数。
显然,当 x x x 在可行域内部, B ( x ) B(x) B(x)为一正数,当 r r r 趋近于 0 0 0 时, P ( x , r ) P(x,r) P(x,r) 的极小点就会趋近于优化问题的极小点。至少有一个 c i ( x ) c_{i}(x) ci(x) 趋于 0 0 0 时,会导致 B ( x ) B(x) B(x) 剧烈增大,迫使极小点落在可行域的内部。于是,原优化问题就转化为一下形式的优化问题:
min P ( x , r ) , x ∈ R n s. t. c i ( x ) < 0 , i = 1 , 2 , … , l \begin{aligned} &\min P(x,r), x\in\mathbb{R}^{n}\\ \text{s. t. }& c_{i}(x)<0, i=1,2,\dots, l \end{aligned} s. t. minP(x,r),x∈Rnci(x)<0,i=1,2,…,l 注意使用内罚函数时,可行域由 D D D 变成 D 0 D^{0} D0 。内罚函数法简称内点法, B ( x ) B(x) B(x) 为对数障碍函数。(这里不介绍倒数障碍函数,因其用得不多性质也不佳)
例 2:用内罚函数法求解约束问题 min { f ( x ) = x 1 2 + 2 x 2 2 } s. t. x 1 + x 2 − 1 ≥ 0 \begin{aligned} &\min\{f(x)=x_{1}^{2}+2x_{2}^{2}\} \\ \text{s. t. }& x_{1}+x_{2}-1\geq 0 \end{aligned} s. t. min{f(x)=x12+2x22}x1+x2−1≥0 解:构造内罚函数
P ( x ( r ) , r ) = x 1 2 + 2 x 2 2 − r ln ( x 1 + x 2 − 1 ) P(x(r),r)=x_{1}^{2}+2x_{2}^{2}-r\ln(x_{1}+x_{2}-1) P(x(r),r)=x12+2x22−rln(x1+x2−1)利用解析法:
∇ x P ( x ( r ) , r ) = ( 2 x 1 − r x 1 + x 2 − 1 , 4 x 2 − r x 1 + x 2 − 1 ) T = 0 \nabla_{x}P(x(r),r)=\left( 2x_{1}-\frac{r}{x_{1}+x_{2}-1}, 4x_{2}-\frac{r}{x_{1}+x_{2}-1} \right)^{T}=0 ∇xP(x(r),r)=(2x1−x1+x2−1r,4x2−x1+x2−1r)T=0得
x ( r ) = ( 1 + 1 + 3 r 3 , 1 + 1 + 3 r 6 ) T x(r)=\left( \frac{1+\sqrt{1+3r}}{3}, \frac{1+\sqrt{1+3r}}{6} \right)^{T} x(r)=(31+1+3r,61+1+3r)T令 r → 0 r\to 0 r→0 ,则
x ( r ) → x ∗ = ( 2 3 , 1 3 ) T , P ( x ( r ) , r ) → f ( x ∗ ) = 2 3 x(r)\to x^{*}=\left(\frac{2}{3}, \frac{1}{3}\right)^{T}, P(x(r),r)\to f(x^{*})=\frac{2}{3} x(r)→x∗=(32,31)T,P(x(r),r)→f(x∗)=32
下面给出内罚函数法的算法,此处同样不讨论其收敛性和病态性质。
注意由于可行域发生了变化, D 0 D^{0} D0不能为空,因此内罚函数法不能处理等式约束问题。
内外罚函数法的主要缺点是当罚函数中的 σ → + ∞ \sigma\to+\infty σ→+∞ 或者 r → 0 r\to0 r→0 时,其Hesse矩阵出现病态,给无约束问题的数值求解带来很大困难。为克服这一缺点,本节介绍乘子法。乘子法的原理与二阶充分条件与Lagrange函数的性质有关,时间问题这里不做详细推导,仅给出定理。
定理:
设 x ∗ x^{*} x∗, λ ∗ \lambda^{*} λ∗ 满足约束问题
min f ( x ) , x ∈ R n s. t. c i ( x ) = 0 , i = 1 , 2 , … , l \begin{aligned} &\min f(x), x\in\mathbb{R}^{n} \\ \text{s. t. }& c_{i}(x)=0, i=1,2,\dots,l \end{aligned} s. t. minf(x),x∈Rnci(x)=0,i=1,2,…,l的二阶充分条件,则存在 σ ∗ > 0 \sigma^{*}>0 σ∗>0,使当 σ ≥ σ ∗ \sigma\geq \sigma^{*} σ≥σ∗ 时, x ∗ x^{*} x∗ 是无约束问题
min { ϕ ( x , λ ∗ , σ ) = f ( x ) + ∑ i = 1 l λ i ∗ c i ( x ) + σ 2 ∑ i = 1 l c i 2 ( x ) } \min\{\phi(x,\lambda^{*},\sigma) = f(x)+\sum_{i=1}^{l}\lambda_{i}^{*}c_{i}(x)+\frac{\sigma}{2}\sum_{i=1}^{l}c_{i}^{2}(x) \} min{ϕ(x,λ∗,σ)=f(x)+i=1∑lλi∗ci(x)+2σi=1∑lci2(x)}的严格局部解。反之,若 x k x^{k} xk 是 ϕ ( x , λ ∗ , σ k ) \phi(x,\lambda^{*},\sigma_{k}) ϕ(x,λ∗,σk) 的极小点,并且 c ( x k ) = 0 c(x^{k})=0 c(xk)=0,则 x k x^{k} xk 是上述约束问题的最优解。
ϕ ( ⋅ ) \phi(\cdot) ϕ(⋅) 被称为增广Lagrange函数或乘子罚函数, λ ∗ \lambda^{*} λ∗ 实际上是最优解 x ∗ x^{*} x∗ 处的Lagrange乘子。我们可以通过取一个适当大的 σ \sigma σ ,然后调整 λ \lambda λ 使它逐渐趋近于 λ ∗ \lambda^{*} λ∗ ,就能得到约束问题的最优解,这是乘子法的基本思想。
下面给出具体迭代算法:
现在我们考虑只有不等式约束的问题:
min f ( x ) , x ∈ R n s. t. c i ( x ) ≤ 0 , i = 1 , 2 , … , l \begin{aligned} &\min f(x), x\in\mathbb{R}^{n} \\ \text{s. t. }& c_{i}(x)\leq 0, i=1,2,\dots,l \end{aligned} s. t. minf(x),x∈Rnci(x)≤0,i=1,2,…,l利用等式约束的结果,引入松弛变量 z i z_{i} zi,将上述问题转化为等式约束问题
min f ( x ) , x ∈ R n s. t. c i ( x ) + z i 2 = 0 , i = 1 , 2 , … , l \begin{aligned} &\min f(x), x\in\mathbb{R}^{n} \\ \text{s. t. }& c_{i}(x)+z_{i}^{2}= 0, i=1,2,\dots,l \end{aligned} s. t. minf(x),x∈Rnci(x)+zi2=0,i=1,2,…,l由于变量增加了,因此问题的维度由 n + l n+l n+l 变成 n ˉ + 2 l \bar{n}+2l nˉ+2l 。这使得问题变得复杂。为了克服此问题,我们可以先关于 z z z 求极小 z ˉ \bar{z} zˉ,再将其代入原问题。此处同样不讨论具体细节。
下面给出具体算法:
对于一般约束优化问题:
min f ( x ) s. t. c i ( x ) = 0 , i ∈ E = { 1 , 2 , … , l } c i ( x ) ≤ 0 , i ∈ I = { l + 1 , l + 2 , … , l + m } x ∈ R n \begin{aligned} &\min f(x) \\ \text{s. t. } &c_{i}(x) = 0, i\in E=\{1,2,\dots, l\}\\ & c_{i}(x)\leq 0, i\in I = \{l+1, l+2,\dots,l+m\} \\ & x\in \mathbb{R}^{n} \end{aligned} s. t. minf(x)ci(x)=0,i∈E={1,2,…,l}ci(x)≤0,i∈I={l+1,l+2,…,l+m}x∈Rn 乘子罚函数为
ϕ ( x , λ , σ ) = f ( x ) + ∑ i = 1 l λ i c i ( x ) + σ 2 ∑ i = 1 l c i 2 ( x ) + 1 2 σ ∑ i = l + 1 l + m { [ max ( 0 , λ i + σ c i ( x ) ) ] 2 − λ i 2 } \phi(x,\lambda,\sigma)=f(x)+\sum_{i=1}^{l}\lambda_{i}c_{i}(x)+\frac{\sigma}{2}\sum_{i=1}^{l}c_{i}^{2}(x)+\frac{1}{2\sigma}\sum_{i=l+1}^{l+m}\{[\max(0, \lambda_{i}+\sigma c_{i}(x))]^{2}-\lambda_{i}^{2}\} ϕ(x,λ,σ)=f(x)+i=1∑lλici(x)+2σi=1∑lci2(x)+2σ1i=l+1∑l+m{[max(0,λi+σci(x))]2−λi2}其乘子迭代公式为:
λ i k + 1 = λ i k + σ k c i ( x k ) , i = 1 , 2 , … , l λ i k + 1 = max { 0 , λ i k + σ k c i ( x k ) } , i = l + 1 , l + 2 , … , l + m \begin{aligned}&\lambda_{i}^{k+1}=\lambda_{i}^{k}+\sigma_{k}c_{i}(x^{k}),\quad &i=1,2,\dots,l\\&\lambda_{i}^{k+1}=\max\{0,\lambda_{i}^{k}+\sigma_{k}c_{i}(x^{k})\},\quad &i=l+1,l+2,\dots,l+m \end{aligned} λik+1=λik+σkci(xk),λik+1=max{0,λik+σkci(xk)},i=1,2,…,li=l+1,l+2,…,l+m终止准则为:
{ ∑ i = 1 l c i 2 ( x k ) + ∑ i = l + 1 l + m [ max ( c i ( x k ) , − λ i k σ k ) ] 2 } 1 2 ≤ ϵ \left\{\sum_{i=1}^{l}c_{i}^{2}(x^{k})+\sum_{i=l+1}^{l+m}\left[\max\left(c_{i}(x^{k}), -\frac{\lambda_{i}^{k}}{\sigma_{k}}\right)\right]^{2}\right\}^{\frac{1}{2}}\leq\epsilon {i=1∑lci2(xk)+i=l+1∑l+m[max(ci(xk),−σkλik)]2}21≤ϵ
关于Lagrange乘子法更一般的介绍可参考此文。