罚函数法
http://blog.csdn.net/ice110956/article/details/17631765
- 罚函数法(外点法)
- 障碍函数法(内点法)
- 混合罚函数
- 通过罚函数,将约束优化问题变成反应原目标函数和约束条件的合成函数
1. 外点惩罚法
- 我们根据约束的特点,构造某种惩罚函数,然后加到目标函数中去,将约束问题求解转化为一系列的无约束问题。这种“惩罚策略”,对于无约束问题求解过程中的那些企图违反约束条件的目标点给予惩罚。如下图:
* 等式约束
* 不等式约束
* 缺点
1.由于上述都是近似最优并且近似可行的,近似最优可以接受,但是近似可行在实际运用中让人无法接受。这一点内罚函数可以解决;
2.根据收敛性,越大越好;但是我们直接求解时,用到求导以及hesse矩阵,越大,越趋于病态,也就是不好解,这是乘子法所要解决的问题。
2. 内点惩罚法
- 相比于外罚函数法在不可行区域加惩罚,内罚函数法在可行域边界筑起高墙,让目标函数无法穿过,就把目标函数挡在可行域内了。
- 内点法总是从内点出发,并保持在可行域内部进行搜索(只适用于,下列不等式)
3. 缺点
内点法适用于解含不等式约束问题,并且每次迭代的点都是可行点,这是设计人员所希望的。但要求初始点为可行域的内点,需要相当的工作量,同时它不能处理等式约束;外点法适于解既含等式约束又含不等式约束的优化问题,初始点可以是可行域之外的点,却不能保证近似最优解是可行的。
收敛慢,大的惩罚参数,容易引起转换后无约束问题的病态,从而造成算法的数值不稳定性