我一直试图让浮点健身功能起作用,但是生物越接近目标序列,它就越长。
我尝试了一些实现,但每一个实现,交叉导致每个生物体的基因序列相同,但适应性只有50%左右
评估-1.0和1.0之间浮点序列值的好方法是什么?
答案 0 :(得分:2)
早熟收敛是进化计算的最大问题之一。我不确定你正在使用什么样的选择方案,但这可能是你需要关注的地方。
如果您没有使用基于锦标赛的选择,第一步是尝试。一个简单的版本是:对于下一代人口中的每个成员,从当前人口中选择X生物。只有最高的健身运动才会继续。重复直到下一个人口已满。如果你使用低X(2是最低的),你的选择压力很弱,因此进化需要更长的时间,但你可以保持更多的多样性。
锦标赛选择的好处在于健身的大小并不重要,只有顺序,这有助于当你的人口几乎均匀时。
假设第一个选择机制不起作用,您需要使用一个主动保留多样性的机制。健身分享往往是一种有效的选择 - 个体解决方案的适应性会根据有多少相同(或相似的生物)而得到修改。基本上记录你拥有的每种类型的解决方案数量,有多少邻居,并使用一个简单的函数来修改基于此的适应度(每个相同副本可能为-5%,每个邻居为-1%......有很多选项) )。
您还可以尝试更多高级技术,但这些技术可以帮助您解决问题。