遗传算法:需要澄清选择以及没有发生交叉时该怎么办

计算科学 优化 遗传算法
2021-11-28 19:48:31

我正在编写一个遗传算法来最小化一个函数。我有两个问题,一个关于选择,另一个关于交叉以及没有发生时该怎么办。

这是我正在做的事情的概述:

while (number of new population < current population)
    # Evaluate all fitnesses and give them a rank. Choose individual based on rank (wheel roulette) to get first parent.
    # Do it again to get second parent, ensuring parent1 =/= parent2

    # Elitism (do only once): choose the fittest individual and immediately copy to new generation

    Multi-point crossover: 50% chance
    if (crossover happened)
        do single point mutation on child (0.75%)
    else
        pick random individual to be copied into new population.
end

所有这些都在另一个while循环中,它跟踪健身进度和迭代次数,我没有包括在内。所以,我的问题:

  1. 如您所见,在每次迭代中随机选择两个父母,直到新的人口被填满。因此,两个相同的父母可能会多次交配,并且肯定有几个合适的父母会多次交配。这有什么不好吗?
  2. obitko教程中,它说如果没有发生交叉,那么孩子就是父母的精确副本。我什至不明白这意味着什么,所以,正如你所看到的,我只是随机选择了一个父母(统一;没有考虑适应度)并复制到新的群体中。这对我来说似乎很奇怪。无论我是否真的这样做,我的结果并没有太大变化。当没有发生交叉时,处理这种情况的正确方法是什么?
0个回答
没有发现任何回复~