【问题标题】:How many and which parents should we select for crossover in genetic algorithm在遗传算法中我们应该选择多少和哪些父母进行交叉
【发布时间】: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


【解决方案1】:

通常,遗传算法用于为具有巨大搜索空间的问题找到一个好的解决方案,其中找到一个绝对解决方案非常困难或不可能。显然,我不知道您的值的范围,但由于您只有三个基因,因此很可能通过遗传算法(或更简单的搜索策略)找到一个好的解决方案,而无需任何额外的运算符。选择和交叉通常在种群中的所有染色体上进行(尽管按原样携带每一代最好的染色体并不少见)。一般的想法是,更适合的染色体更有可能被选择并相互交叉。

突变通常用于阻止遗传算法过早收敛于非最优解。您应该分析没有突变的结果,看看是否需要它。突变通常在整个种群上运行,在每一代,但概率非常小。给每个基因 0.05% 的机会发生突变并不少见。您通常希望给出一个小的变异机会,而不是完全覆盖选择和交叉的结果。

正如建议的那样,我会阅读更多关于遗传算法的一般背景知识,以便更好地理解其概念。

【讨论】:

  • 谢谢。我一直在阅读教程和论文。我目前的理解是:在评估适合之后。函数,最坏的一半解决方案将被杀死,最好的一半将存活。然后,对剩余的一半进行 Pc 概率交叉以产生替换死解决方案的新孩子。然后,在低概率 Pm 下,在变异过程中选择最后更新的解决方案的 20%。最后,这些解决方案将进行到下一代,并在指定的代数内重复相同。如果正确,请指导我,我将继续在我的项目中
  • 您最好不要杀死一半人口,而是对整个人口进行选择过程。更合适的解决方案更有可能被选中,但有可能每个染色体都可以被选中。这对于保持人口的多样性通常很重要。同样,对于突变,您应该在整个人群中运行它,每个基因发生突变的可能性非常小。通常,应用一种称为精英主义的过程,该过程保存每一代最好的染色体并将它们向前传播。这可确保您永远不会失去迄今为止找到的最佳结果。
  • 变异的几率是0.05%还是0.05,即5%? 0.05% 似乎很小..
  • @Marcus Johansson,我的意思是 0.05%。它看起来确实很小,并且对于某些应用程序来说确实很小。一般来说,我处理染色体中接近 50 位的遗传算法(比上面的 3 位要少得多),因为你想留下一些没有突变的染色体,所以它并不是那么小。一些应用程序可能会受益于更高的机会,而一些应用程序的机会则更低。就像与遗传算法相关的大多数事情一样,这都是关于实验并找出最有效的方法。很大程度上取决于您可能拥有的其他运营商以及他们如何协同工作。
【解决方案2】:

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

而Handbook-Multiparent-Eiben 似乎表明四个父母比两个好。然而,床制造商还没有抓住这一点,似乎只生产单人床和双人床。

【讨论】:

    猜你喜欢
    • 2012-12-10
    • 2019-05-26
    • 2020-10-14
    • 2021-02-07
    • 2016-09-16
    • 2014-08-12
    • 1970-01-01
    • 2016-08-31
    相关资源
    最近更新 更多