遗传算法中交叉概率的重点是什么?
遗传算法的一般过程是:(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%,则整个世代由旧群体的染色体的精确拷贝组成。那么为什么新一代不是呢?
答案 0 :(得分:1)
这取决于应用,遗传算法不需要严格执行。你可以看到伪代码中有许多模糊的陈述。
在此示例中,如果未发生交叉,则父项和子项相同,并且常规应用变异步骤。这不是问题,因为主循环将被评估很多次,以便有足够的交叉。主要目标是改善学习,创造许多孩子可能不一定在每个应用程序中实现这一目标。
一个例子是,积极的交叉实际上可能会破坏一些非常好的父母,因此学习质量会下降。交叉率可能在某种程度上保护,但正如我所说,它取决于应用程序。
最佳。
答案 1 :(得分:0)
新一代的所有孩子都是老一代父母的“克隆人”。但即使你有4个染色体为“A,B,C,D”的父母,你也可以有6个孩子有“A,A,A,C,C,D”染色体,因此它们不相同。
PS:当然,如果应用突变,那么差异就会更大。