惩罚函数将有约束优化转化为无约束优化问题

本文介绍惩罚函数法在外点法中的应用,通过将有约束问题转化为无约束问题,利用梯度法等算法实现求解。适用于非线性规划问题,特别是涉及等式及不等式约束的情况。

惩罚函数也叫乘子法,求解带约束的非线性规划问题时,常用KKT条件列出满足条件的方程组,解方程组后即可得到最值点,但是满足KKT条件的方程组是一个非线性方程组,利用计算机求解很难给出通用算法,本篇介绍的惩罚函数也是利用KKT条件,惩罚函数的引入可以将一个约束非线性问题转化为无约束的非线性规划,而无约束线性规划可以用梯度法等实现求解,利用惩罚函数更方便我们制成计算机算法,在现代计算机算法中,凡涉及到求解最值,都会大量的运用惩罚函数或者借鉴惩罚函数思想。

    惩罚函数可以分为外点法和内点法,其中外点法更通用,可解决约束为等式和不等式情形,外点法对初始点也没有要求,可以任意取定义域内任意一点,外点法是真正的将问题转化为无约束问题;内点法初始点必须为可行区内一点,在约束比较复杂时,这个工作还是有难度的,且内点法只能解决不等式情形,对于约束为等式时,内点法使用上有所限制。

一、 外点法

    首先引入一个带等式约束的非线性规划问题:

min              f(x)

s.t.    hi(x)=0   i=1,2,3,...m

目标函数f(x)是非线性函数,约束条件为m个等式,上述问题中可以通过拉格朗日乘数法或KKT条件获得最值,而惩罚函数的解决方案是引入一个新的函数:

外点惩罚函数.gif                       

上式中F(x,σ)为惩罚函数,σ称为惩罚因子,惩罚想.gif称为惩罚项,F(x,σ)中参数x没有限制,可以取任意值。当x的取值在可行区内时,即x满足所有等式时,F(x,σ)=f(x);而x在可行区外时,由于惩罚项是平方和形式,这时F(x,σ)>f(x)。综上所述,惩罚函数F(x,σ)大于等于f(x),或者说F(x,σ)是目标函数f(x)的上界函数,两者的关系可以通过下图说明:

外点惩罚函数.png

x'点是原问题最小值点,即x'也是可行点,满足原问题所有等式条件,F(x,σ)与f(x)在该点函数值相等:F(x',σ)=f(x'),该点是需要间接通过惩罚函数求出的最值点。通过观察可以发现,F(x,σ)的最值F(x*)是小于f(x')的,这是由于F(x*)是F(x,σ)是在无约束情形下的最小值,F(x,σ)参数x可取值范围比原带约束的问题大的多(原问题x必须满足所有等式),极点x*本质是函数F(x,σ)全局最小值点,外点惩罚函数通过每轮增大参数σ,让每一轮x*逼近x',通过不断迭代计算,最终的x*便是近似的目标函数极值点x',这样一来,就实现了利用求解无约束最值得到另一个有约束问题最值。

    再来看约束为不等式的情形,如求以下函数f(x)的最小值:

 

min              f(x)

s.t.    gi(x)>=0   i=1,2,3,...n

约束为不等式时,惩罚函数是下面的形式:

外点惩罚函数不等式.gif                  ②

当惩罚函数参数x在可行区内时,惩罚项

评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值