首页 文章

我们应该选择多少和哪些父母进行遗传算法中的交叉

提问于
浏览
3

我已经阅读了很多教程和论文,并且我理解了遗传算法的概念,但是我在Matlab中实现这个问题时遇到了一些问题 .

总之,我有:

  • 含有三个基因[a b c]的染色体,每个基因受到一些不同的限制 .

  • 要评估目标函数以找到最佳解决方案

我做了什么:

  • 生成a,b和c的随机值,比如说20个种群 . 即
    [a1 b1 c1] [a2 b2 c2] ...... .. [a20 b20 c20]

  • 在每个解决方案中,我评估了目标函数,并将解决方案从最佳到最差排序 .

我遇到的困难:

  • 现在,我们为什么要选择交叉和变异?我发现最好的解决方案还不够吗?

  • 我知道做交叉的概念(生成随机数,概率......等),但是哪些父母和多少人将被选择做交叉或变异?
    我应该为整个20个解决方案(父母)或只有两个解决方案进行交叉吗?

1 回答

  • 0

    通常,遗传算法用于找到具有巨大搜索空间的问题的良好解决方案,其中找到绝对解决方案是非常困难或不可能的 . 显然,我不知道你的 Value 范围,但由于你只有三个基因,很可能通过遗传算法(或更简单的搜索策略)找到一个好的解决方案,而不需要任何额外的算子 . 选择和交叉通常在人群中的所有染色体上进行(尽管从每一代向前传播一些最好的情况并不罕见) . 一般的想法是,更 Health 的染色体更容易被选择并相互交叉 .

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

    正如我所建议的那样,我会对遗传算法进行更为一般的背景阅读,以便更好地理解其概念 .

相关问题