淅沥沥地雨 发表于 2009-8-12 16:14

遗传算法小问题

小弟初学遗传算法……不知到优化题目中的约束条件要在遗传算法的过程中如何体现……
求遗传算法源程序(C语言或matlab程序)……最好附带一些文字说明……
希望看过此贴的朋友帮下忙……小弟不胜感激!!!

M-Scofield 发表于 2009-10-18 11:19

同求,怎么没有高手回答呀

Rainyboy 发表于 2010-10-1 13:35

应该是在适应值计算的时候引入约束条件吧,将不满足约束条件的个体赋予一个很小,甚至是零的适应值,这样,在稍后的依适应值大小决定杂交、变异和复制操作时,这些个体就不可能被选中或者选中的可能性大大小于满足适应性要求的个体了吧。

dongyuanzhixing 发表于 2010-10-7 15:24

顶起来,我也想知道这个问题

风花雪月 发表于 2010-10-18 09:03

看看东北大学,田芳的概括吧

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

smtmobly 发表于 2010-10-25 11:12

淅沥沥地雨 发表于 2009-8-12 16:14 static/image/common/back.gif
小弟初学遗传算法……不知到优化题目中的约束条件要在遗传算法的过程中如何体现……
求遗传算法源程序(C语 ...

约束条件是在你的测试空间体现的,比如你选择8>x>1,那么你在选择的时候,如2进制,则要求高位为0,低位也是0,也就是在010-110之间选择。可以找一本遗传算法的书来看看,应该不是什么困难的问题。最好拿一个具体的例子来讨论。
现在遗传算法衍生方法很多,具体的方法也各有不同,建议还是使用原始的方法。
页: [1]
查看完整版本: 遗传算法小问题