问个遗传算法中处理约束的问题!
我不是使用软件的 ,是自己做程序开发的。能否帮我解答一下问题呢?在遗传算法中非线性约束问题的处理,现在一般采用什么方法?比较新的是什么?那种的处理方式好一些?
谢谢!
Re:问个遗传算法中处理约束的问题!
<遗传算法中处理约束 >主要来自玄光男,和程润伟的两本书
==============================
拒绝方法:抛弃进化过程中产生的所有不可行的解。简单,效率低。
修补方法:获得不可行解后经过修补变成可行解。 对于组合优化问题,创建修补过程相对较容易。
罚函数方法:遗传算法中最常用的方法,通过对不可行解的惩罚来将约束问题变成无约束问题,任何对约束的违反都要在目标函数中添加惩罚项。思路从传统优化中借鉴而来,但应用上仍然有区别。遗传算法中,罚函数法用于在每一代中维持一定数量的不可行解,从而使遗传搜索从可行区域和不可行区域两个方向搜索最优解,通常并不拒绝每代中的不可行解,原因在于其中一些个体可能提供关于最优解的更有用的信息。我们的关注点在于如何确定惩罚项,从而在信息保留(保持一些不可行解)与选择压力(拒绝一些不可行解)之间维持平衡,并要注意避免惩罚不够或者过度惩罚。解决问题以前,对于可行区域和不可行区域这两个子空间没有任何前提假设。应用罚函数法的关键在于如何设计罚函数f(x),这时目标函数可以采用“加”的形式,也可以采用“乘”的形式。
Re:问个遗传算法中处理约束的问题!
对于惩罚函数法,建议用准确不可微罚函数!
页:
[1]