外部罚函数法

来源:互联网 发布:淘宝弹幕代码 编辑:程序博客网 时间:2024/04/27 16:52

    • 基本算法
    • 收敛性

罚函数法的特点是根据问题的目标函数以及约束函数,构造出一个具有惩罚效果的目标函数序列,从而把约束最优化问题转换为对一系列无约束最优化问题的求解。而这种惩罚策略对于在无约束问题的求解过程中企图违反约束的那些迭代点给予很大的目标函数值,迫使这一系列无约束问题的极小点(迭代点)或者无线的向容许集靠近(称为外部罚函数法),或者一直保持在容许集内移动(称为内部罚函数法,仅适用于具有不等式约束的最优化问题),直到收敛到约束问题的极小点。

基本算法

考虑一般约束问题

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),函数μ:R1R1是阶跃函数,所以有
μ(x)={0,1,t0t<0(4)
根据以上显然有
α(x){=0,>0,xDxD(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)的容许集,那么对于xD,总有
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)以xk1为初始点,求解无约束问题
minf(x)+μkα(x)
设其极小点为xk
(3)若μkα(xk)<ϵ,输出xk,停止;否则转(4)
(4)置μk+1=cμkk=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)
其中k1

证明: 因为

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)
由于xkF(x,μk)的极小点,所以必有对于x都有
F(x,μk)F(xk,μk)
所有
F(Xk+1,μk+1)F(xk+1,μk)F(xk,μk)(11)
由此公式(7)得证。由于xkxk+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+10
公式(8)得证。通过公式(8)和公式(12)我们便能证明公式(9)。

定理3:f,s1,s2,...,sm,h1,h2,...,hlRn上的连续函数,则由外部罚函数法做产生的序列{xk}的任意聚点必是约束最优化问题(1)的极小点。

证明: 假设约束最优化问题(1)的极小点为x,不妨设limkxk=x~。由于xD(D是容许集),根据引理2,就有

f(x)=F(x,μk)(13)
由于xkF(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)的极限。设
limkF(xk,μk)=F~
limkf(xk)=f~
所以有
limkF(xk,μk)f(xk)=F~f~
注意到limk=+,αk=F(xk,μk)f(xk)μk,所以有
limkαk=limkF(xk,μk)f(xk)μk=0
再由s1(x),s2(x),...,sm(x)h1(x),h2(x),...,hl(x)的连续性,我们有
α(x~)=limkα(xk)=0
所以有x~D,定理得证。

原创粉丝点击