【发布时间】:2016-09-05 07:20:43
【问题描述】:
遗传算法中交叉概率的意义何在?
遗传算法的一般过程是:(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 个孩子中就有 1 个发生突变。
但我没有看到交叉率的意义。当一对父母在锦标赛选择中被选中并且没有发生交叉时会发生什么?是否应该将父母添加到儿童群体中?在这种情况下,我们最终会在父母和孩子人口中出现重复的成员。
这里的目标是在每一代中创造尽可能多的孩子,并且必须通过交叉来实现。如何更改此算法以使交叉率有意义?
如果交叉概率是 100%,那么所有后代都是由 交叉。如果为 0%,则整个新一代是由精确副本制成的 来自老年人群的染色体(但这并不意味着 新一代也一样!)。 Source
如果交叉概率为 0%,则整个世代都是由来自旧种群的染色体的精确副本组成的。那为什么新一代不一样呢?
【问题讨论】:
-
“那新一代怎么不一样了?”突变。
-
@JohnColeman 它说新染色体是旧种群染色体的精确副本,所以肯定不是。
-
他们可能说错了,但即使将突变率和概率都设为 0,也不是人口中的每个成员都会繁殖,因此整个人口仍然会发生变化。
标签: algorithm genetic-algorithm crossover