用遗传算法搜索3D位置

3
我有一个问题,我想使用遗传算法在3D空间中搜索最佳位置,根据某些适应性函数。由于我正在寻找一个位置,我的染色体由3个浮点数表示。目前,交叉是通过从一个父代中取1或2个数字,然后从另一个父代中取余数来完成的。
当像这样进行交叉时,下一代只会包含与起始种群中染色体具有类似X、Y或Z坐标的位置。因此,变化不太可能发生。我的问题是,是否最好通过使用另一种染色体表示(例如位)来解决这个问题,以便更多的交叉点可以实现(也可以在浮点数内部),或者将突变率设置得更高,并让突变在下一代中增加更多的变化?
1个回答

3
假设3D空间中的点和适应度函数值之间存在空间相关性,您的交叉方法似乎并没有保留导致出现良好表型的父母的属性。随机组合一些轴坐标很可能会导致一个点远离两个父母,因此它的价值与随机变异步骤相同。
我将执行以下操作:
1. 父本:允许单亲以概率p在半径为r的3D球形随机位置产生子代。有助于进行局部调整。
2. 交叉:子代位于连接两个父本的直线上,在随机百分比%位置处。 - 根据您的需求,也可以以小概率p'允许负数和>100%的百分比值。 - 在这种情况下,您还可以在两个父本的起始位置或子代的最终位置上应用相同的球体原理,这将考虑到某些随机性。
3. 组合:以概率p'',子代遵循您当前的交叉规则而不是我的交叉定义。
4. 随机变异:以概率p''',子代是完全随机更改一个或多个父本的结果。 - 替代方法:在搜索过程中沿着随机位置引入新点,以保持多样性在某个最小值周围。
在一些实际应用中,我更喜欢不放弃当前种群中最好的1%,只是为了让迄今为止最好的基因型保持在基因池中。

谢谢,非常好的答案!让我更深入地了解了如何思考遗传算法。 - Wouter92

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接