浮点 GA 适应度函数
Floating point GA fitness function
我一直在尝试使浮点适应度函数起作用,但生物体越接近目标序列,所需的时间就越长。
我尝试了一些实现,但在每一个上,交叉导致每个生物体的基因序列相同,但适应度只有 50% 左右
评估 -1.0 和 1.0 之间的浮点序列值的好方法是什么?
过早收敛是进化计算的最大问题之一。我不确定您使用的是哪种选择方案,但这可能是您需要关注的地方。
如果您不使用基于锦标赛的选择,第一步就是尝试一下。一个简单的版本是:对于下一代种群的每个成员,从当前种群中选择 X 个生物体。只有最高适应度的人才能继续前进。重复直到下一个种群已满。如果你使用较低的 X(2 是最低的)你有一个弱的选择压力,所以进化需要更长的时间但你可以保持更多的多样性。
锦标赛选择的好处在于,适应度的大小并不重要,重要的是顺序,这在人口几乎相等时会有所帮助。
假设这个第一选择机制不起作用,你需要使用一个积极保护多样性的机制。适应度共享往往是一个有效的选择——一个单独的解决方案的适应度会根据那里有多少相同(或相似的生物体)而被修改。基本上记下你有多少种解决方案,有多少个邻居,并使用一个简单的函数来修改基于此的适应度(每个相同副本可能 -5%,每个邻居 -1%......有很多选择).
您还可以尝试许多更高级的技术,但这些应该会让您走得更远。
我一直在尝试使浮点适应度函数起作用,但生物体越接近目标序列,所需的时间就越长。
我尝试了一些实现,但在每一个上,交叉导致每个生物体的基因序列相同,但适应度只有 50% 左右
评估 -1.0 和 1.0 之间的浮点序列值的好方法是什么?
过早收敛是进化计算的最大问题之一。我不确定您使用的是哪种选择方案,但这可能是您需要关注的地方。
如果您不使用基于锦标赛的选择,第一步就是尝试一下。一个简单的版本是:对于下一代种群的每个成员,从当前种群中选择 X 个生物体。只有最高适应度的人才能继续前进。重复直到下一个种群已满。如果你使用较低的 X(2 是最低的)你有一个弱的选择压力,所以进化需要更长的时间但你可以保持更多的多样性。
锦标赛选择的好处在于,适应度的大小并不重要,重要的是顺序,这在人口几乎相等时会有所帮助。
假设这个第一选择机制不起作用,你需要使用一个积极保护多样性的机制。适应度共享往往是一个有效的选择——一个单独的解决方案的适应度会根据那里有多少相同(或相似的生物体)而被修改。基本上记下你有多少种解决方案,有多少个邻居,并使用一个简单的函数来修改基于此的适应度(每个相同副本可能 -5%,每个邻居 -1%......有很多选择).
您还可以尝试许多更高级的技术,但这些应该会让您走得更远。