罚函数法的特点是根据问题的目标函数以及约束函数,构造出一个具有惩罚效果的目标函数序列,从而把约束最优化问题转换为对一系列无约束最优化问题的求解。而这种惩罚策略对于在无约束问题的求解过程中企图违反约束的那些迭代点给予很大的目标函数值,迫使这一系列无约束问题的极小点(迭代点)或者无线的向容许集靠近(称为外部罚函数法),或者一直保持在容许集内移动(称为内部罚函数法,仅适用于具有不等式约束的最优化问题),直到收敛到约束问题的极小点。
基本算法
考虑一般约束问题
mins.t.f(x)si(x)≥0hj(x)=0i=1,2,...,mj=1,2,...,l⎫⎭⎬⎪⎪(1)
可以采用如下的惩罚策略
F(x,μ)=f(x)+μ(∑j=1l[hj(x)]2+∑i=1m[si(x)]2μ(si(x)))(2)
为简单起见,我们将
α(x)=∑j=1l[hj(x)]2+∑i=1m[si(x)]2μ(si(x))(3)
我们将公式(3)称为约束问题(1)的惩罚函数。在惩罚函数
α(x) 中,有函数
μ(x) ,函数
μ:R1→R1 是阶跃函数,所以有
μ(x)={0,1,当t≥0时当t<0时(4)
根据以上显然有
α(x){=0,>0,当x∈D时当x∉D时(5)
其中
D 是约束问题(1)的容许集。
我们把函数
F(x,μ) 称为约束问题(1)的
增广目标函数,其中
mu(>0) 称为
罚因子,
μα(x) 称为
惩罚相。
所以有约束最优化问题(1)能引出如下无约束最优化问题
minxF(x,μ)
即
minxf(x)+μα(x)(6)
那么我们如何通过式(6)来求解约束最优化问题(1)呢,下面给出一个定理。
定理1: 对于某个给定
μ ,若
xμ 是无约束问题(6)的极小点,则
xμ 是约束问题(1)的极小点的充要条件是
xμ 是约束问题(1)的容许点。
证明:
必要性 因为极小点必定是容许点,所以必要性显然成立。
充分性 设
xμ∈D ,这里的
D 是约束问题(1)的容许集,那么对于
∀x∈D ,总有
f(xμ)=F(x,μ)≤F(x,μ)=f(x)[因α(xμ)=0][因xμ是F的极小点][因α(x)=0]
所以
xμ 是约束问题(1)的极小点。
定理1说明,若由无约束问题(6)解出的极小点 xμ 是约束问题(1)的容许点,那 xμ 就是约束问题(1)的极小点。这时,只要求解一回无约束问题就可以了。但是实际上,这种有利的情况很少发生,即 xμ 一般不属于容许集 D ,这时求得的 xμ 一定不是约束问题(1)的极小点,此时,进一步增大 μ ,再重新求解无约束问题(6),新的极小点进一步想容许集靠近,即进一步向(1)的极小点靠近。
在实际的算法中,把 μ 取为一个趋于正无穷大的证书序列 {μk} ,并对 k=0,1,2,... ,一次求解
minF(x,μk)
由此得到极小点序列
{xk} ,之后我们将证明序列
{xk} 是收敛的并且必定收敛于(1)的极小点
x∗ 。
下面给出外部反函数法算法描述。
算法 (外部罚函数法)
已知:约束最优化问题(1)的目标函数 f(x) ,等式约束函数 h1(x),...,hl(x) 和不等式约束函数 s1(x),...,sm(x) ;终止限 ϵ ,设由约束函数构造的罚函数为
α(x)=∑j=1l[hj(x)]2+∑i=1m[si(x)]2μ(si(x))
(1)选定初始点
x0 ;选取初始罚因子
μ1>0 (可以取
μ1=1 ),罚因子的放大系数
c>1 (可以选
c=10 );置k=1
(2)以
xk−1 为初始点,求解无约束问题
minf(x)+μkα(x)
设其极小点为
xk
(3)若
μkα(xk)<ϵ ,输出
xk ,停止;否则转(4)
(4)置
μk+1=cμk;k=k+1 ,转(2)
算法说明
(i)在执行第(2)步时,可以使用无约束最优化方法如最速下降法、Newton法和拟Newton法等等。
(ii)我们也许会提出这样的问题:因为 μ 越大,则 xμ 就会越接近极小点 x∗ ,那么为什么在迭代开始时就把 μ 取得很大,但是,显然当 μ 越大,增光目标函数 F(x,μ) 的Hesse矩阵的条件数就会越大,会给无约束问题的求解增加很多困难,乃至无法求解,所以在迭代开始的时候就不得不把 μ 取得小一点,这会增加计算量,这是外部罚函数法的缺点所在。
收敛性
引理2: 对于由外部罚函数法所产生的序列 {xk} ,总有
F(xk+1,μk+1)≥F(xk,μk)(7)
α(xk+1)≤α(xk)(8)
f(xk+1)≥f(xk)(9)
其中
k≥1 。
证明: 因为
F(x,μ)=f(x)+μα(x)
μk+1≥μk
所以有
F(xk+1,μk+1)=f(xk+1)+μk+1α(xk+1)≥f(xk+1)+μkα(xk+1)=F(xk+1,μk)(10)
由于
xk 是
F(x,μk) 的极小点,所以必有对于
∀x 都有
F(x,μk)≥F(xk,μk)
所有
F(Xk+1,μk+1)≥F(xk+1,μk)≥F(xk,μk)(11)
由此公式(7)得证。由于
xk和xk+1 分别是
F(x,μk) 和
F(x,μk+1) 的极小点,所有有
f(xk+1)+μkα(xk+1)≥f(xk)+μkα(xk)
f(xk)+μk+1α(xk)≥f(xk+1)+μk+1α(xk+1)
将上面两式进行改写便得到
f(xk+1)−f(xk)≥μk(α(xk)−α(xk+1))μk+1(α(xk)−α(xk+1))≥f(xk+1)−f(xk)}(12)
由此我们便能得到
(μk+1−μk)[α(xk)−α(xk+1)]≥0
由于
μk+1≥μk ,所以
αk−αk+1≥0
公式(8)得证。通过公式(8)和公式(12)我们便能证明公式(9)。
定理3: 设 f,s1,s2,...,sm,h1,h2,...,hl 是 Rn 上的连续函数,则由外部罚函数法做产生的序列 {xk} 的任意聚点必是约束最优化问题(1)的极小点。
证明: 假设约束最优化问题(1)的极小点为 x∗ ,不妨设 limk→∞xk=x~ 。由于 x∗∈D ( D 是容许集),根据引理2,就有
f(x∗)=F(x∗,μk)(13)
由于
xk 是
F(x,μk) 的极小点,所以有
F(x∗,μk)≥F(xk,μk)(14)
由于
μkα(xk)≥0 ,所以有
f(x∗)≥F(xk,μk)≥f(xk)(15)
公式(15)对
∀k 均成立。所以当
k→∞ 时,有
f(x∗)≥f(x~)(16)
所以我们只需要证明
x~∈D ,我们便能得到
f(x∗)≤f(x~) ,此时我们便能证明出
x~ 为约束最优化问题(1)的极小点。
由引理和公式(14)(16)我们知道不减序列
F(xk,μk) 和
f(xk) 都有不大于
f(x∗) 的极限。设
limk→∞F(xk,μk)=F~
limk→∞f(xk)=f~
所以有
limk→∞F(xk,μk)−f(xk)=F~−f~
注意到
limk→∞=+∞ ,
αk=F(xk,μk)−f(xk)μk ,所以有
limk→∞αk=limk→∞F(xk,μk)−f(xk)μk=0
再由
s1(x),s2(x),...,sm(x) 和
h1(x),h2(x),...,hl(x) 的连续性,我们有
α(x~)=limk→∞α(xk)=0
所以有
x~∈D ,定理得证。