2

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

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

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

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

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

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

4

2 回答 2

8

你可以像这样实现它:

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

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

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

于 2012-12-24T10:52:22.073 回答
1

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

于 2017-02-04T11:48:59.950 回答