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