Encoding 在遗传算法中使用值编码方法时,如何对双亲进行交叉?

Encoding 在遗传算法中使用值编码方法时,如何对双亲进行交叉?,encoding,machine-learning,genetic-algorithm,crossover,Encoding,Machine Learning,Genetic Algorithm,Crossover,在遗传算法中有一个阶段,我们应该选择将染色体从父母交给后代 通过二进制形式很容易做到 但是,如果我们使用值编码对染色体进行编码,该怎么办呢 假设染色体上的一位是双类型值,比如说0.99,它的范围是(0-1),因为它代表一个概率 如何跨越这个双重数字 将二进制转换为交叉,然后再转换回…?您可以使用混合交叉运算符(α=0的变量): 假设p1

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

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

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

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

如何跨越这个双重数字

将二进制转换为交叉,然后再转换回…?

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

假设
p1
,此交叉运算符在
[p1,p2]
范围内创建一个随机解

混合交叉算子有一个有趣的特性,即如果父解之间的差异很小,子解和父解之间的差异也很小。因此,当前人口的扩散决定了解决方案在结果人口中的扩散(这是一种适应形式)

Kalyanmoy Deb和Hans Georg Beyer在中描述了混合交叉算子(BLX-α)的更高级版本和另一个著名算子(模拟二进制交叉)(简短摘要)



是另一种可能性。

概率是指每个染色体的等位基因总和必须为1吗?或者你是说每个等位基因都有自己的概率?如果是后者,你可能只需要做单点交叉…@DMlash Hi,谢谢你的回答,每个等位基因都有它自己的概率。如何对双类型值进行单点交叉?我知道如何对二进制值进行处理。我想这取决于你要解决的问题,以及这样做是否有意义。如果真的有意义的话,就像你说的,每条染色体都是长度为n的实值等位基因的载体。然后在[1,n]范围内绘制一个均匀的随机值;我们将该值称为S。对于每个父母,你将等位基因保持在地板(S)位置(即,如果该值为5.333,那么你将元素保持在位置1,2,3,4,5),并将上限处的值交叉到n个位置(即,6,7,8,…,n)。听起来像是学校的问题:请检查这一点,感谢您的回答,特别是作为参考文章!
p1    first parent
p2    second parent
u     random number in [0, 1]

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