本文共 1016 字,大约阅读时间需要 3 分钟。
约束问题是指自变量取值受到一定限制的优化问题,用数学模型可表示为
约束优化问题存在最优解的必要条件是目标函数和约束函数都为连续、可微函数,且存在一个非空的可行域。约束优化方法大致可以分为三类:
① 根据约束建立边界进行直接搜索 ② 将约束优化问题转化为无约束优化问题 ③ 通过二次规划或线性规划逐次逼近非线性规划(线性化)直接搜索方法的基本思想是在可行域内,选取初始点后,按适当的步长往可行的搜索方向进行移动,不断迭代直到满足结束条件。所有的迭代点都限制在可行域内。常见的方法有:,。
这个方法在使用过程比较常见,笔者在学习过程中已经有一些体会,有些方法确实是已经在使用的。基本思路是将约束合并到目标中,或者是将搜索方向直接投影到满足约束的方向上,使得搜索过程不必在检验解时候满足约束。
罚函数法是根据约束条件的特点,将约束转化为某种惩罚函数,加入到目标函数中。
常见的方法有: ① 外罚函数法。例如在博文中,解满足体积重量约束时,适应度为物品价值,不满足约束时,采用相反数的方式计算其适应度(惩罚函数相当于“减去两倍的物品价值”)。 ② 内点法。也称为内罚函数法或障碍函数法。基本思想是根据约束条件建立障碍函数,让靠近边界的解“代价较大”,使得搜索过程在约束边界内。内点法通常也和外罚函数法结合这一起使用。 ③ 乘子法。基本实现是从原问题的拉格朗日函数出发,再加上适当的罚函数转化为无约束问题。可行方向法的基本思想是在每一次迭代中,要求搜索方向对目标函数是下降的,并且对约束函数是可行的。常见的有三种策略:
① 通过求解线性规划确定可行搜索方向,如Zoutendijk可行方向法; ② 通过投影矩阵构造可行搜索方向,如梯度投影法; ③ 通过既约矩阵构造可行搜索方向,如既约梯度法;基本实现是利用最大熵原理推导出可微函数G(x),用G(x)函数来逼近目标函数。
二次规划和线性规划是比较容易求解的,因而对于非线性规划问题通常也可以线性化后再进行求解。常见方法如下:
① 牛顿-拉格朗日方法:先是使用拉格朗日函数对原优化问题转化进行转化,再使用牛顿法对转化后的方程组进行求解; ②参考文献:
《最优化方法及其MATLAB实现》 【其他参考资料链接已插在文中对应位置】转载地址:http://gueai.baihongyu.com/