【问题标题】:Choosing parents to crossover in genetic algorithms?在遗传算法中选择父母进行交叉?
【发布时间】:2012-12-10 07:33:32
【问题描述】:

首先,这是作业的一部分。

我正在尝试实现一种遗传算法。我对选择父母进行交叉感到困惑。

在我的笔记中(显然有问题)这是作为示例所做的;

  1. Pc(交叉的可能性)* 种群大小 = 估计的交叉染色体数(如果不是偶数,则四舍五入到最接近的偶数之一)
  2. 为每个染色体选择 [0,1] 范围内的随机数,如果该数字小于 Pc,则选择该染色体作为交叉对。

但是当应用第二步时,选择的染色体数等于第一步找到的结果。由于随机性,这并不总是得到保证。

所以这没有任何意义。我搜索了选择父母进行交叉,但我发现的只是交叉技术(一点,切割和切片等)以及如何在所选父母之间进行交叉(我对这些没有问题)。我只是不知道应该选择哪个染色体进行交叉。有什么建议或简单的例子吗?

【问题讨论】:

    标签: genetic-algorithm genetic-programming


    【解决方案1】:

    你可以这样实现:

    对于每个新的孩子,你决定它是否会由随机概率交叉产生。如果是,那么您选择两个父母,例如。通过轮盘赌选择或锦标赛选择。两个父母生了一个孩子,然后你用变异概率对其进行变异并将其添加到下一代。如果不是,那么您只选择一个“父代”克隆它,以概率对其进行变异并将其添加到下一个种群中。

    我注意到的其他一些观察结果,我想发表评论。当它应该是个体时,我经常读到“染色体”这个词。你几乎从不选择染色体,而是选择完整的个体。染色体只是解决方案的一部分。这可能是吹毛求疵,但解决方案不是染色体。解决方案是由几个染色体组成的个体,这些染色体由以等位基因形式显示其表达的基因组成。通常一个人只有一个染色体,但仍然不能混合术语。

    我还注意到您标记了遗传编程,它基本上只是一种特殊类型的遗传算法。在 GP 中,您将树视为可以表示数学公式或计算机程序的染色体。不过,您的问题似乎与 GP 无关。

    【讨论】:

    • *一种特殊类型的进化算法但同意
    【解决方案2】:

    这是一个很晚的答案,但希望它对将来的某人有所帮助。即使两条染色体没有配对(并且产生了孩子),它们也会进入下一代(没有交叉),但经过一些突变(再次受概率影响)。另一方面,如果两条染色体配对,那么它们会为下一代产生两个孩子(取代原来的两个父母)。所以,这就是为什么两代人的染色体数目保持不变的原因。

    【讨论】:

      猜你喜欢
      • 2019-05-26
      • 2013-10-12
      • 2020-10-14
      • 2014-08-12
      • 1970-01-01
      • 2016-08-31
      • 1970-01-01
      • 2020-04-14
      相关资源
      最近更新 更多