遗传算法中使用值编码方式时如何交叉parents?

How to crossover the parents when using a value encoding method in genetic algorithm?

遗传算法中有一个阶段,我们应该选择将 parents 的染色体交叉到后代。

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

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

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

如何交叉这个 DOUBLE 数?

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

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

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

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

假设 p1 < p2,此交叉运算符在 [p1, p2].

范围内创建随机解

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

Self-Adaptive Genetic Algorithms with Simulated Binary Crossover by Kalyanmoy Deb and Hans-Georg Beyer (a short summary 中描述了混合交叉运算符 (BLX-α) 和另一个众所周知的运算符(模拟二进制交叉)的更高级版本。


是另一种可能。