【问题标题】:How to crossover the parents when using a value encoding method in genetic algorithm?在遗传算法中使用值编码方法时如何交叉父母?
【发布时间】:2016-05-04 08:06:33
【问题描述】:

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

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

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

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

如何交叉这个 DOUBLE 数字?

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

【问题讨论】:

  • 概率是指每个染色体的等位基因总和必须为 1?或者你的意思是每个等位基因都有自己的概率?如果是后者,您可能只需进行单点交叉...
  • @DMlash 您好,感谢您的回复,每个等位基因都有自己的概率。如何对双类型值进行单点交叉?我知道如何针对二进制值执行此操作..
  • 我想这取决于您要解决的问题以及首先这样做是否有意义。如果它确实有意义,那么正如您所说,每条染色体都是长度为 n 的实值等位基因的向量。然后你在 [1,n] 的范围内绘制一个均匀的随机值;我们将此值称为 S。对于每个父母,您将等位基因保持在 floor(S) 位置(即,如果值为 5.333,那么您将元素保持在位置 1、2、3、4、5)并将上限(S)处的值交叉到 n 个位置(即 6、7、8、...、n)。
  • 听起来像是学校的问题:看看这个stackoverflow.com/questions/36827961/…

标签: encoding machine-learning genetic-algorithm crossover


【解决方案1】:

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

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

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

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

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

Kalyanmoy Deb 和 Hans-Georg Beyer 在Self-Adaptive Genetic Algorithms with Simulated Binary Crossover 中描述了混合交叉算子 (BLX-α) 和另一个著名算子(模拟二元交叉)的更高级版本(简短摘要here)。


Differential Evolution 是另一种可能性。

【讨论】:

  • 感谢您的回答,尤其是参考文章!
猜你喜欢
  • 2012-12-10
  • 2019-05-26
  • 2019-01-12
  • 2014-08-12
  • 2021-02-07
  • 1970-01-01
  • 2016-08-31
  • 2015-07-03
相关资源
最近更新 更多