“突变”和“交叉”有什么区别?

人工智能 比较 进化算法 交叉运营商 变异算子 基因操作员
2021-10-26 05:39:22

进化计算的背景下,特别是遗传算法,有两种随机操作“变异”和“交叉”。它们之间有什么区别?

4个回答

突变是应用于群体中单个个体的操作它可以例如在染色体中引入一些噪声。例如,如果染色体是二元的,则突变可能只是位(或基因)的翻转。

交叉是一种将两个个体(通常称为“父母”)作为输入并以某种方式组合他们的染色体的操作,从而通常产生另外两条染色体(“孩子”),它们以某种方式继承了基因双方的父母。

有关这些操作的更多详细信息,您可以使用David E. Goldberg(他是遗传算法专家,刚刚接受 John H. Holland 的建议)所著的《搜索、优化和机器学习中的遗传算法》一书。您还可以查看Andries P. Engelbrecht所著的Computational Intelligence: An Introduction (2nd edition, 2007)一书

我喜欢使用术语“重组算子”而不是“交叉算子”,因为后一个术语暗示了一种特定类型的操作:通过在两个父母之间切换相应的染色体片段来构建后代。“重组”(对我来说)暗示了任何从两个父母的遗传信息中形成后代的操作。例如,当个体是排列时,这种意义上的“交叉”不起作用;但是许多有效的“重组算子”仍然是可能的,它们保留了两个父排列的非冲突部分。

在遗传算法中,突变可以被认为是个体内部发生的相对较小的随机变化。突变通常是一个基因值的变化,而不使用任何其他个体的基因值,但也可以是排列中元素的随机重排,或几个基因值的随机变化。有时该术语适用于“爬山”过程,其中将几个突变应用于个体并测试它们对健康的影响;然后保留产生最大适应度改进的那个。

进化算法以与生物学中使用这两个术语非常相似的方式使用它:

在生物学中,突变是生物体、病毒或染色体外 DNA 或其他遗传元件基因组核苷酸序列的永久性改变。

资料来源:维基百科

染色体交叉[...] 是遗传物质的交换 [...] 在有性生殖过程中产生重组染色体。

资料来源:维基百科

因此,主要区别在于突变发生在一个人内部,而交叉发生在两个人之间。

变异是次要算子(10%),而交叉是主要算子(90%),它会产生后代,而变异只能在染色体内打乱信息