2

在遗传算法中有一个阶段,我们应该选择将染色体从父母传给后代。

通过二进制形式很容易做到。

但是,如果我们使用值编码对染色体进行编码,该怎么办?

假设我的染色体中的一位是 DOUBLE 类型的值,比如说 0.99,它的范围是(0-1),因为它代表一个概率。

如何交叉这个 DOUBLE 数字?

转换为二进制以交叉然后转换回......?

4

1 回答 1

0

您可以使用混合交叉运算符(α = 0 的变体):

p1    first parent
p2    second parent
u     random number in [0, 1]

offspring = (1 - u) * p1 + u * p2

假设p1 < p2,这个交叉算子在范围内创建了一个随机解[p1, p2]

混合交叉算子有一个有趣的特性,即如果父母之间的差异很小,则子解决​​方案和父解决方案之间的差异也很小。因此,当前人口的传播决定了解决方案在最终人口中的传播(这是 的一种形式adaptation)。

混合交叉算子 (BLX-α) 和另一个众所周知的算子 (模拟二元交叉) 的更高级版本在Kalyanmoy Deb 和 Hans-Georg Beyer 的具有模拟二元交叉的自适应遗传算法中进行了描述(这里的简短摘要) .


差异进化是另一种可能性。

于 2016-05-05T16:06:46.977 回答