本文中我们考虑如下有约束的一般优化问题的求解方法:
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. min f ( x ) c i ( x ) = 0 , i ∈ E = { 1 , 2 , … , l } c i ( x ) ≤ 0 , i ∈ I = { l + 1 , l + 2 , … , l + m } x ∈ R n 其中,可行域 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 ∣ c i ( x ) = 0 , i ∈ E ; c i ( x ) ≤ 0 , i ∈ I ; x ∈ R n }
求解约束优化问题要比求解无约束优化问题 复杂困难得多。一般来说,求解约束优化问题的方法大致分两类:一类是此文 中介绍的直接求解法,另一类是本文中即将介绍的罚函数法。
罚函数法是利用目标函数 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. min f ( x ) , x ∈ R n c i ( 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 ∣ c i ( 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 ∣ c i ( 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) \} x min { 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 ) = x 1 + x 2 } s. t. c ( x ) = x 2 − x 1 2 = 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 , σ ) = x 1 + x 2 + σ ( x 2 − x 1 2 ) 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}) ∂ x 1 ∂ P = 1 − 4 σ x 1 ( x 2 − x 1 2 ) , ∂ x 2 ∂ P = 1 + 2 σ ( x 2 − x 1 2 ) 令∇ x P ( x , σ ) = 0 \nabla_{x}P(x,\sigma)=0 ∇ x P ( 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} x 1 ( σ ) = − 2 1 , x 2 ( σ ) = 4 1 − 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 ( σ ) = ( − 2 1 , 4 1 ) T = x ∗ P ( x ( σ ) , σ ) = − 4 1 = 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. min f ( x ) , x ∈ R n c i ( 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 , c i ( 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 , c i ( 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. min f ( x ) c i ( x ) = 0 , i ∈ E = { 1 , 2 , … , l } c i ( x ) ≤ 0 , i ∈ I = { L + 1 , l + 2 , … , l + m } x ∈ R n 记 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 ∣ c i ( x ) ∣ β + i = 1 ∑ l [ max ( 0 , c i ( 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 ∣ c i ( x ) ∣ β + i = 1 ∑ l [ max ( 0 , c i ( 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 ) 为惩罚项。
对于比较复杂的约束,通常采用迭代的方法:
给定初始点 x 0 x^{0} x 0 ,设ϵ > 0 , c > 1 \epsilon >0, c>1 ϵ > 0 , c > 1 为给定实数,选择序列 { σ k } \{\sigma_{k}\} { σ k } ,使得σ k → + ∞ \sigma_{k}\to+\infty σ k → + ∞ ,令 k = 1 k=1 k = 1 ;
以 x k − 1 x^{k-1} x k − 1 为初始点,求解无约束优化问题min { P ( x , σ k ) = f ( x ) + σ k P ~ ( x ) } \min\{P(x,\sigma_{k})=f(x)+\sigma_{k}\tilde{P}(x) \} min { P ( x , σ k ) = f ( x ) + σ k P ~ ( x ) } 得到最优解x k x^{k} x k 。
若σ k P ~ ( x k ) < ϵ \sigma_{k}\tilde{P}(x^{k})<\epsilon σ k P ~ ( x k ) < ϵ ,则停止迭代,x k x^{k} x k 作为原问题的最优解;否则,令σ k + 1 = c σ k \sigma_{k+1}=c\sigma_{k} σ k + 1 = c σ k ,k : = k + 1 k:=k+1 k : = k + 1 ,转至步骤2。
对于外罚函数的算法收敛性 与外罚函数的病态性质 这里不作讨论。 使用外罚函数法时,选取 σ 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 × 2 k − 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\} D 0 = { x ∈ R n ∣ c i ( 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 ∑ l ln ( − c i ( 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 ) + r B ( x ) = f ( x ) − r i = 1 ∑ l ln ( − c i ( 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) c i ( 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. min P ( x , r ) , x ∈ R n c i ( x ) < 0 , i = 1 , 2 , … , l 注意使用内罚函数时,可行域由 D D D 变成 D 0 D^{0} D 0 。内罚函数法简称内点法,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 ) = x 1 2 + 2 x 2 2 } x 1 + x 2 − 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 ) = x 1 2 + 2 x 2 2 − r ln ( x 1 + x 2 − 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 ∇ x P ( x ( r ) , r ) = ( 2 x 1 − x 1 + x 2 − 1 r , 4 x 2 − x 1 + x 2 − 1 r ) 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 ) = ( 3 1 + 1 + 3 r , 6 1 + 1 + 3 r ) 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 ∗ = ( 3 2 , 3 1 ) T , P ( x ( r ) , r ) → f ( x ∗ ) = 3 2
下面给出内罚函数法的算法,此处同样不讨论其收敛性和病态性质。
给定初始点 x 0 ∈ D 0 x^{0}\in D^{0} x 0 ∈ D 0 ,设 ϵ > 0 , 0 < c < 1 \epsilon>0, 0<c<1 ϵ > 0 , 0 < c < 1 为给定实数,选择正值序列 { r k } \{r_{k}\} { r k } 使 r k → 0 r_{k}\to0 r k → 0 ,令 k = 1 k=1 k = 1 。
以 x k − 1 x^{k-1} x k − 1 为初始点,求解约束优化问题min { P ( x , r k ) = f ( x ) + r k B ( x ) } s. t. x ∈ D 0 \begin{aligned} &\min \{P(x,r_{k})=f(x)+r_{k}B(x)\} \\ \text{s. t. }& x\in D^{0} \end{aligned} s. t. min { P ( x , r k ) = f ( x ) + r k B ( x ) } x ∈ D 0 得到最优解 x k x^{k} x k 。
若 r k B ( x k ) < ϵ r_{k}B(x^{k})<\epsilon r k B ( x k ) < ϵ , 则停止迭代,x k x^{k} x k 作为原问题的最优解;否则,令 r k + 1 = c r k r_{k+1}=cr_{k} r k + 1 = c r k , k : = k + 1 k:=k+1 k : = k + 1 ,转至步骤2。
注意由于可行域发生了变化,D 0 D^{0} D 0 不能为空,因此内罚函数法不能处理等式约束问题 。
乘子法
内外罚函数法的主要缺点是当罚函数中的 σ → + ∞ \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. min f ( x ) , x ∈ R n c i ( 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 ∗ c i ( x ) + 2 σ i = 1 ∑ l c i 2 ( x ) } 的严格局部解。反之,若 x k x^{k} x k 是 ϕ ( x , λ ∗ , σ k ) \phi(x,\lambda^{*},\sigma_{k}) ϕ ( x , λ ∗ , σ k ) 的极小点,并且 c ( x k ) = 0 c(x^{k})=0 c ( x k ) = 0 ,则 x k x^{k} x k 是上述约束问题的最优解。
ϕ ( ⋅ ) \phi(\cdot) ϕ ( ⋅ ) 被称为增广Lagrange函数 或乘子罚函数 ,λ ∗ \lambda^{*} λ ∗ 实际上是最优解 x ∗ x^{*} x ∗ 处的Lagrange乘子。我们可以通过取一个适当大的 σ \sigma σ ,然后调整 λ \lambda λ 使它逐渐趋近于 λ ∗ \lambda^{*} λ ∗ ,就能得到约束问题的最优解,这是乘子法的基本思想。
下面给出具体迭代算法:
给定初始点 x 0 x^{0} x 0 ,设初始乘子 λ 1 \lambda^{1} λ 1 ,精度要求为 ϵ \epsilon ϵ ,放大系数为 c c c ,选择序列 { σ k } \{\sigma_{k}\} { σ k } ,使 σ k → + ∞ \sigma_{k}\to+\infty σ k → + ∞ ,令 k = 1 k=1 k = 1 。
以 x k − 1 x^{k-1} x k − 1 为初始点,求解无约束优化问题 min x ϕ ( x , λ k , σ k ) \min_{x}\phi(x,\lambda^{k},\sigma_{k}) x min ϕ ( x , λ k , σ k ) 得到最优解 x k x^{k} x k 。
若 [ ∑ i = 1 l c i 2 ( x k ) ] 1 2 ≤ ϵ [\sum_{i=1}^{l}c_{i}^{2}(x_{k})]^{\frac{1}{2}}\leq \epsilon [ ∑ i = 1 l c i 2 ( x k ) ] 2 1 ≤ ϵ ,则停止迭代,得到近似解 x k x^{k} x k ;否则,转到步骤4。
令 λ i k + 1 = λ i k + σ k c i ( x k ) \lambda_{i}^{k+1}=\lambda_{i}^{k}+\sigma_{k}c_{i}(x^{k}) λ i k + 1 = λ i k + σ k c i ( x k ) ,k : = k + 1 k:=k+1 k : = k + 1 ,转到步骤2。
只有不等式约束时的乘子法
现在我们考虑只有不等式约束的问题:
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. min f ( x ) , x ∈ R n c i ( x ) ≤ 0 , i = 1 , 2 , … , l 利用等式约束的结果,引入松弛变量 z i z_{i} z i ,将上述问题转化为等式约束问题
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. min f ( x ) , x ∈ R n c i ( x ) + z i 2 = 0 , i = 1 , 2 , … , l 由于变量增加了,因此问题的维度由 n + l n+l n + l 变成 n ˉ + 2 l \bar{n}+2l n ˉ + 2 l 。这使得问题变得复杂。为了克服此问题,我们可以先关于 z z z 求极小 z ˉ \bar{z} z ˉ ,再将其代入原问题。此处同样不讨论具体细节。
下面给出具体算法:
给定初始点 x 0 x^{0} x 0 ,设初始乘子 λ 1 \lambda^{1} λ 1 ,精度要求 ϵ \epsilon ϵ ,放大系数为 c c c ,选择序列 { σ k } \{\sigma_{k}\} { σ k } ,使 σ k → + ∞ \sigma_{k}\to+\infty σ k → + ∞ ,令 k = 1 k=1 k = 1 。
以 x k − 1 x^{k-1} x k − 1 为初始点,求解无约束规划问题:min x ϕ ( x , λ k , σ k ) \min_{x}\phi(x,\lambda^{k},\sigma_{k}) x min ϕ ( x , λ k , σ k ) 得到最优解 x k x^{k} x k 。
若 { ∑ i = 1 l [ max ( c i ( x k ) , − λ i k σ k ) ] 2 } 1 2 ≤ ϵ \left\{\sum_{i=1}^{l}\left[\max\left(c_{i}(x^{k}), -\frac{\lambda_{i}^{k}}{\sigma_{k}}\right)\right]^{2}\right\}^{\frac{1}{2}}\leq \epsilon { ∑ i = 1 l [ max ( c i ( x k ) , − σ k λ i k ) ] 2 } 2 1 ≤ ϵ ,则停止迭代,得近似解 x k x^{k} x k ;否则,转至步骤4。
令 λ i k + 1 = max { 0 , λ i k + σ k c i ( x k ) } , k : = k + 1 \lambda_{i}^{k+1}=\max\{0, \lambda_{i}^{k}+\sigma_{k}c_{i}(x^{k})\}, k:=k+1 λ i k + 1 = max { 0 , λ i k + σ k c i ( x k ) } , k : = k + 1 ,转至步骤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. min f ( x ) c i ( x ) = 0 , i ∈ E = { 1 , 2 , … , l } c i ( x ) ≤ 0 , i ∈ I = { l + 1 , l + 2 , … , l + m } x ∈ R n 乘子罚函数为
ϕ ( 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 λ i c i ( x ) + 2 σ i = 1 ∑ l c i 2 ( x ) + 2 σ 1 i = l + 1 ∑ l + m { [ max ( 0 , λ i + σ c i ( x ) ) ] 2 − λ i 2 } 其乘子迭代公式为:
λ 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} λ i k + 1 = λ i k + σ k c i ( x k ) , λ i k + 1 = max { 0 , λ i k + σ k c i ( x k ) } , i = 1 , 2 , … , l i = 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 ∑ l c i 2 ( x k ) + i = l + 1 ∑ l + m [ max ( c i ( x k ) , − σ k λ i k ) ] 2 } 2 1 ≤ ϵ
关于Lagrange乘子法更一般的介绍可参考此文 。