【发布时间】: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