选择父母在遗传算法中交叉?

时间:2012-12-23 14:40:51

标签: genetic-algorithm genetic-programming

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

我正在尝试实施遗传算法。我很困惑选择父母来交叉。

在我的笔记中(显然有些不对劲)这是作为例子所做的事情;

  1. Pc(交叉的可能性)*种群大小=估计的染色体数量与交叉(如果不均匀,则舍入到最接近的一个)
  2. 为每条染色体选择范围[0,1]中的随机数,如果此数字小于Pc,则选择此染色体作为交叉对。
  3. 但是当应用第二步时,选择的染色体计数等于第一步中发现的结果。由于随机性,这并不总是得到保证。

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

2 个答案:

答案 0 :(得分:6)

您可以像这样实现:

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

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

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

答案 1 :(得分:1)

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