遗传算法中的交叉概率有什么意义?
遗传算法的一般过程是:(来源)
首先生成一个初始种群。然后使用一种选择方法(在本例中为锦标赛选择)来选择一对将创建一对孩子的个体。
孩子们被添加到孩子们的人口中,直到其大小达到所需的值。
下一步是合并大小为 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%,则整个世代都是由来自旧种群的染色体的精确副本组成的。那么新一代怎么不一样呢?