1

遗传算法中的交叉概率有什么意义?

遗传算法的一般过程是:(来源

首先生成一个初始种群。然后使用一种选择方法(在本例中为锦标赛选择)来选择一对将创建一对孩子的个体。

孩子们被添加到孩子们的人口中,直到其大小达到所需的值。

下一步是合并大小为 N 的父母群体和大小为 M 的子群体,或者通过一个替换另一个,保留两个群体中最好的 N 个个体。

N = population size
P = create parent population by randomly creating N individuals
while not done
    C = create empty child population
    while not enough individuals in C
        parent1 = select parent   ***** HERE IS WHERE YOU DO TOURNAMENT SELECTION *****
        parent2 = select parent   ***** HERE IS WHERE YOU DO TOURNAMENT SELECTION *****
        child1, child2 = crossover(parent1, parent2)
        mutate child1, child2
        evaluate child1, child2 for fitness
        insert child1, child2 into C
    end while
    P = combine P and C somehow to get N new individuals
end while

当然,我们可能希望以给定的概率执行突变,例如每 100 个孩子中就有 1 个会发生突变。

但我没有看到交叉率的意义。当一对父母在锦标赛选择中被选中并且没有发生交叉时会发生什么?是否应该将父母添加到儿童群体中?在这种情况下,我们最终会在父母和子女人口中出现重复的成员。

这里的目标是在每一代中创造尽可能多的孩子,并且必须通过交叉来实现。如何更改此算法以使交叉率有意义?

如果交叉概率为 100%,则所有后代都是通过交叉产生的。如果为 0%,则整个新一代是由来自旧种群的染色体的精确副本制成的(但这并不意味着新一代是相同的!)。 资源

如果交叉概率为 0%,则整个世代都是由来自旧种群的染色体的精确副本组成的。那么新一代怎么一样呢?

4

2 回答 2

1

这取决于应用程序,遗传算法不需要以严格的方式实现。您可以看到伪代码中有许多模糊的陈述。

在这个例子中,如果没有发生交叉,父母和孩子是相同的,并且像往常一样应用突变步骤。这不是问题,因为主循环将被评估很多次,因此会有足够的交叉。主要目标是改善学习,创建大量孩子可能不一定在每个应用程序中都能实现这一目标。

一个例子是,激进的交叉实际上可能会腐蚀一些非常好的父母,因此学习质量会下降。交叉率可以在一定程度上保护这一点,但正如我所说,这取决于应用程序。

最好的。

于 2016-05-10T11:04:15.640 回答
0

新一代中的所有孩子都是老一代中一位父母的“克隆”。但是,即使您有 4 个父母的染色体为“A、B、C、D”,您也可以有 6 个孩子的染色体为“A、A、A、C、C、D”,因此它们并不相同。

PS:当然,如果应用了变异,那么差异就更大了。

于 2016-05-10T11:07:04.470 回答