看看东北大学,田芳的概括吧
(1) 拒绝不可行解法。即抛弃所有进化过程中产生的不可行解,这是遗传算法中常用的约束处理方法之一,优点是简单易行,但是只有当搜索空间是凸的,且为整个搜索空间适当的一部分时才有效,否则,极易导致因找不到可行解使算法陷入死循环,最终使算法中断,所以在复杂的约束条件下这种方法无法使用。
(2) 修复不可行解法。即采用适当的修复算子,对初始种群和子代中的不可行解进行修复使之转化为可行。在组合优化中这种修复策略显示出很强的优越性,但是对于一般的约束优化问题没有通用的修复算法,修复算子的构造方法需依赖于问题本身,对于每个具体问题必须设计专门的修复程序,对于某些问题修复过程甚至比原问题更加复杂。
(3) 改进遗传算子法。针对求解的问题设计特殊的遗传算子,使这些遗传算子作用后产生的后代均为可行解,在许多领域中人们采用专门的问题表达方式和遗传算子构造了非常成功的遗传算法,这也是一个十分普遍的趋势。但是这种方法仅限于简单的约束条件,对于复杂的非线性的约束优化问题很难设计出相应的遗传算子。
(4) 惩罚函数法。这是一种约束优化中常用的方法,即对不可行解施加某种惩罚,使其适值减小。这种方法的特点是可以适当接受非可行解,扩大了搜索空间,使得一些非可行解有了生存的机会,从而保留了其中的优秀基因,而且经过不断迭代,种群会逐渐收敛于可行解。但这类算法中惩罚函数和惩罚系数的选取较为复杂,须根据具体问题建立或选取适当的形式才能得到较为满意的解。
|