约束规划问题的罚函数解法

本文中我们考虑如下有约束的一般优化问题的求解方法:

mins. t. f(x)ci(x)=0,iE={1,2,,l}ci(x)0,iI={l+1,l+2,,l+m}xRn
其中,可行域 D 记为:
D={x|ci(x)=0,iE;ci(x)0,iI;xRn}

求解约束优化问题要比求解无约束优化问题复杂困难得多。一般来说,求解约束优化问题的方法大致分两类:一类是此文中介绍的直接求解法,另一类是本文中即将介绍的罚函数法。

罚函数法是利用目标函数 f(x) 和约束函数 c(x) ,构造具有惩罚性质的函数 P(x)=P¯(f(x),c(x)) ,使得原约束优化问题转化为求 P(x) 最优解的无约束优化问题。以下讨论中,我们假设所有函数都是连续的

外罚函数法

外罚函数是一类不可行点的方法,其基本思想是:在求解约束优化的问题时,通过对不可行的迭代点施加惩罚,并随着迭代点的进展,增大惩罚量,迫使迭代点逐步向可行域靠近。

等式约束的优化问题

minf(x),xRns. t. ci(x)=0,i=1,2,,l
P~(x)=i=1l|ci(x)|β,β1
定义如下形式的外罚函数
P(x,σ)=f(x)+σP~(x)=f(x)+σi=1l|ci(x)|β,β1
其中 σ>0 是一个参数。显然,当 x 为可行点时, P~(x)=0 ;当 x 不是可行点时 P~(x)>0 ,于是 P(x,σ)>f(x) 。特别的,随着 σ 增大, P(x) 也在增大。所以,要使 P(x,σ) 取到极小值, P~(x) 应充分小,即 P(x,σ) 的极小点应充分逼近可行域。于是,上述等式约束优化问题转化为无约束优化的问题
minx{P(x,σ)=f(x)+σP~(x)}
通常取 β=2

例 1:求解下列约束优化问题

min{f(x)=x1+x2}s. t. c(x)=x2x21=0
解:构造外罚函数
P(x,σ)=x1+x2+σ(x2x21)2
利用解析法求解
Px1=14σx1(x2x21),Px2=1+2σ(x2x21)
xP(x,σ)=0
得到
x1(σ)=12,x2(σ)=1412σ
再令 σ+
x(σ)=(12,14)T=xP(x(σ),σ)=14=f(x)

不等式约束的优化问题

我们考虑如下不等式约束的优化问题

minf(x),xRns. t. ci(x)0,i=1,2,,l
P~(x)=i=1l[max(0,ci(x))]α,α1
定义如下形式的外罚函数
P(x,σ)=f(x)+σi=1l[max(0,ci(x))]αα1
此时的外罚函数性质与上一节类似,通常取 α=2

一般约束的优化问题

考虑一般的约束优化问题

mins. t. f(x)ci(x)=0,iE={1,2,,l}ci(x)0,iI={L+1,l+2,,l+m}xRn
P~(x)=i=1l|ci(x)|β+i=1l[max(0,ci(x))]α,α1,β1
类似地,定义如下形式的外罚函数
P(x,σ)=f(x)+i=1l|ci(x)|β+i=1l[max(0,ci(x))]α,α1,β1
上述罚函数性质与之前的讨论类似。可见,外罚函数的最优解在 σ+ 的过程中一直在可行域外部取点,直到趋近最优解 x 。所以之中方法为外罚函数法,简称外点法; P(x,σ) 为外罚函数,或叫增广目标函数, σ 为惩罚因子, P~(x) 为惩罚项。

对于比较复杂的约束,通常采用迭代的方法:

  1. 给定初始点 x0 ,设 ϵ>0,c>1 为给定实数,选择序列 {σk} ,使得 σk+ ,令 k=1
  2. xk1 为初始点,求解无约束优化问题
    min{P(x,σk)=f(x)+σkP~(x)}
    得到最优解 xk
  3. σkP~(xk)<ϵ ,则停止迭代, xk 作为原问题的最优解;否则,令 σk+1=cσk k:=k+1 ,转至步骤2。

对于外罚函数的算法收敛性与外罚函数的病态性质这里不作讨论。 使用外罚函数法时,选取 σ1 过大,或者 σk 增长过快可以使算法快速收敛,但很难精确地求解相应的无约束极小问题;反之,可以使求得 P(x,σk+1) 的极小点变得容易,但收敛太慢。通常取 σk=0.1×2k1

内罚函数法

在外罚函数法中,近似最优解一般只能近似地满足约束条件,对于某些实际问题这样的近似最优解释不可接受的。内罚函数法是一类保持严格可行性的方法。其基本思想是:严格要求迭代点在可行域内移动,当迭代点接近可行域边界时,有无穷大的障碍,迫使迭代点返回可行域的内部。

考虑不等式约束的优化问题,可行域内部记为:

D0={xRn|ci(x)<0,i=1,2,,l}
B(x)=i=1lln(ci(x))
定义如下形式的内罚函数:
P(x,r)=f(x)+rB(x)=f(x)ri=1lln(ci(x))
其中 r>0 是一参数。

显然,当 x 在可行域内部, B(x) 为一正数,当 r 趋近于 0 时, P(x,r) 的极小点就会趋近于优化问题的极小点。至少有一个 ci(x) 趋于 0 时,会导致 B(x) 剧烈增大,迫使极小点落在可行域的内部。于是,原优化问题就转化为一下形式的优化问题:

minP(x,r),xRns. t. ci(x)<0,i=1,2,,l
注意使用内罚函数时,可行域由 D 变成 D0 。内罚函数法简称内点法, B(x) 为对数障碍函数。(这里不介绍倒数障碍函数,因其用得不多性质也不佳)

例 2:用内罚函数法求解约束问题

min{f(x)=x21+2x22}s. t. x1+x210
解:构造内罚函数
P(x(r),r)=x21+2x22rln(x1+x21)
利用解析法:
xP(x(r),r)=(2x1rx1+x21,4x2rx1+x21)T=0

x(r)=(1+1+3r3,1+1+3r6)T
r0 ,则
x(r)x=(23,13)T,P(x(r),r)f(x)=23

下面给出内罚函数法的算法,此处同样不讨论其收敛性和病态性质。

  1. 给定初始点 x0D0 ,设 ϵ>0,0<c<1 为给定实数,选择正值序列 {rk} 使 rk0 ,令 k=1
  2. xk1 为初始点,求解约束优化问题
    min{P(x,rk)=f(x)+rkB(x)}s. t. xD0
    得到最优解 xk
  3. rkB(xk)<ϵ , 则停止迭代, xk 作为原问题的最优解;否则,令 rk+1=crk , k:=k+1 ,转至步骤2。

注意由于可行域发生了变化,内罚函数法不能处理等式约束问题

乘子法

内外罚函数法的主要缺点是当罚函数中的 σ+ 或者 r0 时,其Hesse矩阵出现病态,给无约束问题的数值求解带来很大困难。为克服这一缺点,本节介绍乘子法。乘子法的原理与二阶充分条件与Lagrange函数的性质有关,时间问题这里不做详细推导,仅给出定理。

等式约束问题的乘子法

定理
x , λ 满足约束问题

minf(x),xRns. t. ci(x)=0,i=1,2,,l
的二阶充分条件,则存在 σ>0 ,使当 σσ 时, x 是无约束问题
min{ϕ(x,λ,σ)=f(x)+i=1lλici(x)+σ2i=1lc2i(x)}
的严格局部解。反之,若 xk ϕ(x,λ,σk) 的极小点,并且 c(xk)=0 ,则 xk 是上述约束问题的最优解。

ϕ() 被称为增广Lagrange函数乘子罚函数 λ 实际上是最优解 x 处的Lagrange乘子。我们可以通过取一个适当大的 σ ,然后调整 λ 使它逐渐趋近于 λ ,就能得到约束问题的最优解,这是乘子法的基本思想。

下面给出具体迭代算法:

  1. 给定初始点 x0 ,设初始乘子 λ1 ,精度要求为 ϵ ,放大系数为 c ,选择序列 {σk} ,使 σk+ ,令 k=1
  2. xk1 为初始点,求解无约束优化问题
    minxϕ(x,λk,σk)
    得到最优解 xk
  3. [li=1c2i(xk)]12ϵ ,则停止迭代,得到近似解 xk ;否则,转到步骤4。
  4. λk+1i=λki+σkci(xk) k:=k+1 ,转到步骤2。

只有不等式约束时的乘子法

现在我们考虑只有不等式约束的问题:

minf(x),xRns. t. ci(x)0,i=1,2,,l
利用等式约束的结果,引入 松弛变量 zi ,将上述问题转化为等式约束问题
minf(x),xRns. t. ci(x)+z2i=0,i=1,2,,l
由于变量增加了,因此问题的维度由 n+l 变成 n¯+2l 。这使得问题变得复杂。为了克服此问题,我们可以先关于 z 求极小 z¯ ,再将其代入原问题。此处同样不讨论具体细节。

下面给出具体算法:

  1. 给定初始点 x0 ,设初始乘子 λ1 ,精度要求 ϵ ,放大系数为 c ,选择序列 {σk} ,使 σk+ ,令 k=1
  2. xk1 为初始点,求解无约束规划问题:
    minxϕ(x,λk,σk)
    得到最优解 xk
  3. {li=1[max(ci(xk),λkiσk)]2}12ϵ ,则停止迭代,得近似解 xk ;否则,转至步骤4。
  4. λk+1i=max{0,λki+σkci(xk)},k:=k+1 ,转至步骤2。

一般问题的乘子法求解

对于一般约束优化问题:

mins. t. f(x)ci(x)=0,iE={1,2,,l}ci(x)0,iI={l+1,l+2,,l+m}xRn
乘子罚函数为
ϕ(x,λ,σ)=f(x)+i=1lλici(x)+σ2i=1lc2i(x)+12σi=l+1l+m{[max(0,λi+σci(x))]2λ2i}
其乘子迭代公式为:
λk+1i=λki+σkci(xk),λk+1i=max{0,λki+σkci(xk)},i=1,2,,li=l+1,l+2,,l+m
终止准则为:
i=1lc2i(xk)+i=l+1l+m[max(ci(xk),λkiσk)]212ϵ

关于Lagrange乘子法更一般的介绍可参考此文

猜你喜欢

转载自blog.csdn.net/philthinker/article/details/78518153
今日推荐