遗传算法 - 交叉
在本章中,我们将讨论什么是交叉运算符及其其他模块、它们的用途和优点。
交叉简介
交叉算子类似于繁殖和生物交叉。在这种情况下,选择不止一个亲本,并使用亲本的遗传物质产生一个或多个后代。交叉通常应用于遗传算法中,概率较高 - p c。
交叉算子
在本节中,我们将讨论一些最常用的交叉运算符。值得注意的是,这些交叉算子非常通用,GA 设计者也可能选择实现特定于问题的交叉算子。
一点交叉
在这种单点交叉中,选择一个随机交叉点,并交换其两个父母的尾巴以获得新的后代。
多点交叉
多点交叉是单点交叉的推广,其中交替的片段被交换以获得新的后代。
统一交叉
在统一交叉中,我们不会将染色体分成片段,而是单独处理每个基因。在这种情况下,我们本质上是为每条染色体掷一枚硬币来决定它是否会包含在后代中。我们还可以将硬币偏向父母之一,以便孩子拥有更多来自该父母的遗传物质。
整体算术重组
这通常用于整数表示,并通过使用以下公式取两个父项的加权平均值来工作 -
- Child1 = α.x + (1-α).y
- Child2 = α.x + (1-α).y
显然,如果 α = 0.5,那么两个子级将是相同的,如下图所示。
戴维斯阶交叉 (OX1)
OX1 用于基于排列的交叉,旨在将有关相对排序的信息传递给后代。它的工作原理如下 -
在父代中创建两个随机交叉点,并将它们之间的线段从第一个父代复制到第一个子代。
现在,从第二个父级中的第二个交叉点开始,将剩余未使用的数字从第二个父级复制到第一个子级,环绕列表。
对第二个孩子重复上述步骤,将父母的角色颠倒过来。
还存在许多其他交叉,例如部分映射交叉(PMX)、基于顺序的交叉(OX2)、随机交叉、环交叉等。