遗传算法中的交叉概率

时间:2016-05-10 10:52:21

标签: algorithm genetic-algorithm crossover

遗传算法中交叉概率的重点是什么?

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

首先生成初始种群。然后使用选择方法(在这种情况下是锦标赛选择)来选择将创建一对孩子的一对个人。

将儿童添加到儿童群体中,直到其大小达到所需值。

下一步是将大小为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个孩子中就有一个会发生突变。

但我没有看到交叉率。如果在锦标赛选拔中选择了一对父母并且交叉并没有发生,会发生什么?父母应该加入儿童群体吗?在这种情况下,我们最终会在父母和子女群体中重复成员。

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

  

如果交叉概率为100%,那么所有后代都是由   交叉。如果它是0%,则全新一代由精确副本制成   来自旧人群的染色体(但这并不意味着   新一代是一样的!)。   Source

如果交叉概率为0%,则整个世代由旧群体的染色体的精确拷贝组成。那么为什么新一代不是呢?

2 个答案:

答案 0 :(得分:1)

这取决于应用,遗传算法不需要严格执行。你可以看到伪代码中有许多模糊的陈述。

在此示例中,如果未发生交叉,则父项和子项相同,并且常规应用变异步骤。这不是问题,因为主循环将被评估很多次,以便有足够的交叉。主要目标是改善学习,创造许多孩子可能不一定在每个应用程序中实现这一目标。

一个例子是,积极的交叉实际上可能会破坏一些非常好的父母,因此学习质量会下降。交叉率可能在某种程度上保护,但正如我所说,它取决于应用程序。

最佳。

答案 1 :(得分:0)

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

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