20第三章罚函数法及改进算法

第3章 罚函数法及改进算法

3.1 引言

罚函数法是解决约束优化问题的重要方法,它的基本思想是用无约束问题代替约束问题,因而无约束问题的目标函数必须是原来的目标函数与约束函数的某种组合,类似线性规划中的M 法求初始可行解,在原来的目标函数上加上由约束函数组成的一个“惩罚项”来迫使迭代点逼近可行域,所以称为罚函数法。这样把约束问题转化成求解一系列的无约束极小点,通过有关的无约束问题来研究约束极值问题,从而使问题变的简单。许多非线性约束优化方法都要用罚函数作为评价函数来评价一个点的好坏,这在选择新点确定步长等方面都起着重要的作用,不同的罚项对算法影响很大,根据罚项的不同可以分为以下几类:

外罚函数法

对于问题

min ()f x (3-1)

.s t ()0i c x = 1,2,,;i m =??? (3-2)

()0i c x ≥ 1,2,,;i m m n =++??? (3-3)

其中:n f R R →为线性连续函数。

定义外罚函数为:

(,)L x σ()()f x P x σ=+()()f x Q x σ=+ (3-4) ()Q x =11()min{0,()}m n i i i i m c x c x βα

==++

∑∑ (3-5) 通常取==2αβ,这样定义的外罚函数法,当x 为可行点是,()0Q x =;当x 不是可行点时,()0Q x >。而且x 离可行域越远()Q x 的值越大,它优点是允许从可行域的外部逐步逼近最优点,但其明显的缺点是它需要求解一系列无约束极

小化问题,计算工作量很大,且由于其收敛速度仅是线性的,往往需要较长的时间才能找到问题的近似解,再考虑到实际中所使用的终止准则,若实现不当,则算法很难找到约束问题的一个较好可行解,从而不适用于那些要求严格可行性的问题。

内罚函数法

它是针对不等式约束(3-1)(3-3)提出的,基本思想是在约束区域的边界筑起一道“墙”来,当迭代点靠近边界时,函数值陡然增大,于是最优点被挡在可行域内部,这样产生的点列k x 每个点都是可行点。通常定义内罚函数为:

1

(,)()()B x f x B x σσ=+ (3-6)

11()()

m i i B x c x ==∑ (3-7) 要减弱()B x 的影响,故令σ逐渐增大。内罚函数法的好处是每次迭代的点都是可行点,当迭代到一定阶段时,可以被接受为一个较好的近似最优解。但是内点罚函数法要求初始点位于可行域的内部,除特殊情况外,确定这样一个初始点并非易事。此外,由于内点罚函数不是处处有定义或不一定存在全局极小,故无约束最优化问题中的线性搜索方法不再适用,另外,当接近可行域边界时,内点罚函数法必须修正通常的线性搜索方法。

由于内点罚函数法不能处理等式约束,且寻求初始可行点的计算工作量往往太大。因此,在实际中,为了求解一般的非线性约束优化问题,人们往往将内点罚函数法与外点罚函数法结合起来适用。

混合罚函数法

混合罚函数法是针对问题(3-1)-(3-3)提出来的,当初始点0x 给定后,对等式约束和不被0x 满足的那些不等式约束用外罚函数法,而被0x 满足的那些不等式约束用内罚函数法。

通常定义混合罚函数为:

1

11(,)()(

)()()i I i P x f x P x c x σσσ∈=++∑ (3-8)

222

1()()min{0,()}m i i i i I P x c x c x =∈=+∑∑ (3-9)

1{()0,1,2,

,}i I i c x i m m n =>=++ 2{()0,1,2,

,}i I i c x i m m n =≤=++

精确罚函数法 对于外点罚函数法和内点罚函数法来说,其工作量很大,收敛慢的主要原因是它们需要求解一系列的无约束优化问题,而导致相应罚函数的无约束极小化运算越来越难于精确执行,效率差则是因为需要罚因子趋于无穷大或零所带来的罚函数呈病态问题。由此自然想到,能否设计出一种罚函数,使得只要令其中的罚参数取适当的有限值后,该罚函数的无约束极小点就恰好是原约束问题的最优解,从而克服外、内点罚函数法的缺点呢?通常称这样的罚函数为精确罚函数。

对问题(3-1)-(3-3),定义()()()1()((),())T m C x c x c x ---=如下

()()()i i c x c x -=,1,2,,i m =???

()()min{0,()}i i c x c x -=,1,2,,i m m n =++???

对于1L 罚函数

()11

()()()P x f x C x σ-=+ 其中0σ>是罚因子。如果

σλ*

∞≥

则在二阶充分条件

0T d W d *>,0d ?≠,0T A d *=

的假定下可证x *是1L 罚函数的局部严格极小点。所以1L 罚函数也常称为1

L 精确罚函数。同理,L ∞罚函数()1()()()P x f x C x σ-∞

=+也是精确罚函数。 乘子罚函数法

内外罚函数法的缺点是需要罚因子趋于无穷大才能使求解罚函数的极小和求解原向题等价。乘子罚函数法具有不要求初始点为严格内点,甚至不

要求其为可行点的特点,它利用近似Lagrange 乘子,求其近似解,并且逼近最优解,而不需要无穷大的罚因子,因此对它的研究有重要的理论和实用价值。

最早的乘子罚函数(又称为增广Lagrange 函数)是由Henstenes(2069)针对等式约束问题(3-1)(3-2)导出的,其形式为:

2

(,,)()()()2T P x f x c x c x σ

λσλ=-+ (3-10) 增广Lagrange 函数的另一种等价形式是在2069年由Powell 提出的,它提出对()i c x 进行平移,即用()i i c x θ-代替()i c x ,i θ是参数,这种平移的好处是不破坏()i c x ?的方向,由此Powell(2069)得到罚函数:

21(,,)()()(())2m T i i

i P x f x c x c x σλσλθ==-+-∑ (3-11)

如果定义i i λσθ=,则知式(3-10)与(3-11)只相差与x 无关的项212m i i σθ=∑,由

于式(3-10)与(3-11)等价,故罚函数(3-10)也称为Henstenes-Powell 罚函数。

我们看到通常都是用二次罚函数作为罚项,因此称之为二次罚函数乘子法。然而,它的缺点是容易引起罚因子过大,造成罚函数的Hesse 矩阵严重病态。

许多非线性约束优化方法都要用某个罚函数作为评价函数来评价一个点的好坏,这在选择新点确定步长等方面都起着重要的作用,因此对不同罚项的研究具有重要的理论和实际价值。近年来,许多研究者试图通过改变罚项构造出新的罚函数,有效地避免罚因子过大引起的罚函数的Hesse 矩阵严重病态的情况。

3.2 优化中的罚函数法

对一般约束最优化问题

min ()f x (3-20)

.s t ()0i c x = 1,2,,;i m =??? (3-20)

相关文档
最新文档