【发布时间】:2013-10-12 18:17:55
【问题描述】:
我已经阅读了很多教程、论文,并且理解了遗传算法的概念,但是我在 Matlab 中实现该问题时遇到了一些问题。
总之,我有:
包含三个基因 [ a b c ] 的染色体,每个基因受一些不同的限制。
要评估的目标函数以找到最佳解决方案
我做了什么:
生成 a、b 和 c 的随机值,例如 20 个总体。即
[a1 b1 c1] [a2 b2 c2]…..[a20 b20 c20]在每个解决方案中,我都评估了目标函数并将解决方案从最佳到最差排序。
我遇到的困难:
现在,我们为什么要进行交叉和变异?我找到的最佳解决方案还不够吗?
我知道进行交叉的概念(生成随机数、概率等),但是会选择哪些父母以及其中多少人进行交叉或突变?
我应该对全部 20 个解决方案(父母)进行交叉还是只对其中两个进行交叉?
【问题讨论】:
-
你找到的解决方案是随机 20 个中最好的,如果这对你来说足够好,那么你不需要任何算法......交叉和变异的想法是创造新的人口,这将在几代人中得到改善。选择方法是遗传算法的主要部分,任何书籍/教程都应该将很大一部分用于选择。但是,您建议跨越整个人群的事实表明您误解了 GA 的一些基本知识,也许可以尝试一些介绍性的书...
标签: matlab genetic-algorithm evolutionary-algorithm mutation fitness