外罚函数法
求解约束最优化问题,一种途径是在可行域内寻找目标函数值下降得迭代点列(可行方向法),这种方法对于带非线性约束的最优化问题求解效果一般都不太理想。(这也就是为什么可行方向法中约束条件一般是线性约束的原因)。本文学习求解有约束最优化的另一种方法,称为罚函数法。它的基本思想是用原问题的目标函数和约束函数构造新的目标函数——罚函数,从而将约束最优化问题转化为无约束最优化问题来求解。
求解约束最优化问题,一种途径是在可行域内寻找目标函数值下降得迭代点列(可行方向法),这种方法对于带非线性约束的最优化问题求解效果一般都不太理想。(这也就是为什么可行方向法中约束条件一般是线性约束的原因)。
本文学习求解有约束最优化的另一种方法,称为罚函数法。它的基本思想是用原问题的目标函数和约束函数构造新的目标函数——罚函数,从而将约束最优化问题转化为无约束最优化问题来求解。
外罚函数法:
本文我们先介绍外罚函数法。
考虑约束非线性最优化问题
其中 ,
,
都是定义在
上的实值连续函数,可行域为 S 。
罚函数是指利用目标函数 和约束函数
,
构造的,具有”惩罚性质“的辅助函数:
当 时,当且仅当
,
当 时,
,并且
随着 x 到 S 的距离增大而增大。
1,等式约束优化问题:
定义罚函数为:,其中参数
为罚因子(通常为一个大的正数)。
2,不等式约束优化问题:
定义罚函数为:,其中参数
为罚因子(通常为一个大的正数)。
3,一般约束优化问题:
定义罚函数为:,其中参数
为罚因子(通常为一个大的正数)。
其中:
典型取法:,其中
通常取 1 或 2 。
定理1:设对于某个给定的 ,无约束优化问题
的最优解为
,S 是原问题的可行域,那么:
(1)若 ,则
必为原问题的最优解;
(2),无约束问题
,存在最优解
,并且若
,则
,即
也是原问题的最优解。
引理:设 ,
和
分别是取罚因子
和
时无约束优化问题
的最优解,则下列各式成立:
(1) ———— F 是单调增数列;
(2) ————P 是单调减数列;
(3) ————f 是单调增数列。
证明:
(1)
是
取罚因子
时的最优解
取 为
,有:
是单调增数列。
(2)
和
分别是
取罚因子
和
时的最优解
将上面两式分别相加,消去相同的项,得:
是单调减数列
(3)
是单调增数列
算法步骤:
步骤1:选取初始点 ,初始罚因子
,放大系数
,允许误差
,令 k =1;
步骤2:以 为初始点,求解
,求得最优解
;
步骤3:若 ,停止,输出
;否则,令
,返回步骤2。
例题解析:
例题:用外罚函数法求解约束优化问题:
解:定义罚函数:
对应的无约束优化问题是:
得最优解
依次对 k=1,2,...,计算得到要使
总结:
优点:(1)对初始点无要求;(2)既可用于求解等式约束,也可用于求解不等式约束。
缺点:(1)求出的最优解不一定是可行解;(2)罚函数在可行域边界上往往不可导。
(行文中若有纰漏,希望大家指正)
更多推荐
所有评论(0)