惩罚函数法
- 格式:ppt
- 大小:1.88 MB
- 文档页数:32
惩罚函数法
惩罚函数法(penalty function method)是一种优化方法。
它的基本思想是,将原始问题转换为一个新的目标函数,在此基础上,通过对不等式、二次限制条件等加入惩罚项,使得原问题转化为无约束优化问题,从而可以采用常见的求解方法,如牛顿法、拉格朗日乘子法或者梯度下降法等。
该方法的具体步骤如下:
(1) 将原有的约束条件作为等式或不等式表示;
(2) 将约束条件中的不等式转换为等式,并将其和原有的等式组合在一起,形成新的约束条件;
(3) 将原有的目标函数和约束条件组合在一起,形成新的目标函数;
(4) 将新的目标函数中的不等式约束条件添加惩罚项,并且形成一个新的无约束优化问题;
(5) 用一种方法求解这个新的无约束优化问题,获得最优解。
惩罚函数法简介罚函数法它将有约束最优化问题转化为求解无约束最优化问题:其中M为足够大的正数,起"惩罚"作用,称之为罚因子,F(x,M)称为罚函数。
定理对于某个确定的正数M,若罚函数F(x,M)的最优解x*满足有约束最优化问题的约束条件,则x*是该问题的最优解。
序列无约束最小化方法罚函数法在理论上是可行的,在实际计算中的缺点是罚因子M的取值难于把握,太小起不到惩罚作用;太大则由于误差的影响会导致错误。
改进这些缺点,可根据上述定理加以改进,先取较小的正数M,求出F(x,M)的最优解x*。
当x*不满足有约束最优化问题的约束条件时,放大M(例如乘以10)重复进行,直到x*满足有约束最优化问题的约束条件时为止。
种类传统的罚函数法一般分为外部罚函数法和内部罚函数法。
外部罚函数法是从非可行解出发逐渐移动到可行区域的方法。
内部罚函数法也称为障碍罚函数法,这种方法是在可行域内部进行搜索,约束边界起到类似围墙的作用,如果当前解远离约束边界时,则罚函数值是非常小的,否则罚函数值接近无穷大的方法。
由于进化计算中通常采用外部罚函数法,因此本文主要介绍外部罚函数法。
在进化计算中,研究者选择外部罚函数法的原因主要是该方法不需要提供初始可行解。
需要提供初始可行解则是内部罚函数法的主要缺点。
由于进化算法应用到实际问题中可能存在搜索可行解就是NP难问题,因此这个缺点是非常致命的。
外部罚函数的一般形式为B(x)=f(x)+[∑riGi+∑cjHj]其中B(x)是优化过程中新的目标函数,Gi和Hj分别是约束条件gi(x)和hj(x)的函数,ri和cj是常数,称为罚因子。
Gi和Hj最常见的形式是Gi=max[0,gi(x)]aHj=|hj(x)|b其中a和b一般是1或者2。
理想的情况下,罚因子应该尽量小,但是如果罚因子低于最小值时可能会产生非可行解是最优解的情况(称为最小罚因子规则)。
这是由于如果罚因子过大或者过小都会对进化算法求解问题产生困难。