在进化计算的背景下,特别是遗传算法,有两种随机操作“变异”和“交叉”。它们之间有什么区别?
“突变”和“交叉”有什么区别?
人工智能
比较
进化算法
交叉运营商
变异算子
基因操作员
2021-10-26 05:39:22
4个回答
突变是应用于群体中单个个体的操作。它可以例如在染色体中引入一些噪声。例如,如果染色体是二元的,则突变可能只是位(或基因)的翻转。
交叉是一种将两个个体(通常称为“父母”)作为输入并以某种方式组合他们的染色体的操作,从而通常产生另外两条染色体(“孩子”),它们以某种方式继承了基因双方的父母。
有关这些操作的更多详细信息,您可以使用David E. Goldberg(他是遗传算法专家,刚刚接受 John H. Holland 的建议)所著的《搜索、优化和机器学习中的遗传算法》一书。您还可以查看Andries P. Engelbrecht所著的Computational Intelligence: An Introduction (2nd edition, 2007)一书。
我喜欢使用术语“重组算子”而不是“交叉算子”,因为后一个术语暗示了一种特定类型的操作:通过在两个父母之间切换相应的染色体片段来构建后代。“重组”(对我来说)暗示了任何从两个父母的遗传信息中形成后代的操作。例如,当个体是排列时,这种意义上的“交叉”不起作用;但是许多有效的“重组算子”仍然是可能的,它们保留了两个父排列的非冲突部分。
在遗传算法中,突变可以被认为是个体内部发生的相对较小的随机变化。突变通常是一个基因值的变化,而不使用任何其他个体的基因值,但也可以是排列中元素的随机重排,或几个基因值的随机变化。有时该术语适用于“爬山”过程,其中将几个突变应用于个体并测试它们对健康的影响;然后保留产生最大适应度改进的那个。
变异是次要算子(10%),而交叉是主要算子(90%),它会产生后代,而变异只能在染色体内打乱信息
其它你可能感兴趣的问题