首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在遗传算法中,我们应该选择多少个父母进行交叉。

在遗传算法中,我们应该选择多少个父母进行交叉。
EN

Stack Overflow用户
提问于 2013-10-05 22:33:09
回答 2查看 3.8K关注 0票数 4

我读过很多教程,论文,我理解了遗传算法的概念,但是我有一些问题要在Matlab中实现。

总括而言,我有:

  • 含有三个基因a、b、c的染色体,每个基因受不同的限制。
  • 求最优解的目标函数

我所做的:

  • 生成a,b和c的随机值,例如20个种群。i.e a1 b1 c1…..a20 b20 c20
  • 在每个解决方案中,我评估了目标函数,并将解决方案从最好到最坏排序。

我所面临的困难:

  • 现在,我们为什么要进行交叉和变异呢?我找到的最好的解决方案还不够吗?
  • 我知道做交叉的概念(产生随机数,概率…)。(等等)但是哪些父母和他们中有多少人将被选中进行交叉或变异? 我应该为整个20个解决方案(父母)做交叉,还是只对其中两个进行交叉?
EN

回答 2

Stack Overflow用户

发布于 2013-10-07 07:43:05

一般情况下,遗传算法是用来寻找一个很好的解决问题的一个巨大的搜索空间,在那里找到一个绝对的解是非常困难或不可能的。很明显,我不知道你的值的范围,但是由于你只有三个基因,很有可能通过遗传算法(或者更简单的搜索策略)找到一个很好的解决方案,而不需要任何额外的运算符。种群中的所有染色体通常都进行选择和杂交(尽管从每一代人身上携带一些最好的东西并不少见)。一般的想法是,更适合的染色体更有可能被选择和相互交叉。

变异通常用于阻止遗传算法过早收敛于非最优解.你应该在没有突变的情况下分析结果,看看是否需要。突变通常是在整个种群上进行的,每一代都是如此,但概率很小。让每一个基因都有0.05%的几率发生变异,这并不罕见。你通常想给一个小的机会突变,而不是它完全超过选择和交叉的结果。

正如人们所建议的那样,我会对遗传算法做一个简单的背景阅读,以便更好地理解它的概念。

票数 1
EN

Stack Overflow用户

发布于 2019-09-26 12:26:24

分享一些建议,从‘实用神经网络食谱在C++’的书.为您的第一个epoc提供一个大得多的人口是一个好主意,然后您可能会包含一些特性,这些特性将有助于一个可接受的解决方案。以后,可以拥有较少人口的epocs将调整、合并或淘汰这些有利的特征。

手册-多父母-Eiben似乎表明四位父母比两位更好。然而,床制造商还没有意识到这一点,似乎只生产单人床和双人床。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/19203425

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档