2010-12-13 53 views
6

我目前正在研究StringEvolver,我不确定可能在GAs中使用的特定术语。在遗传算法中仅选择顶部x%作为选择

在遗传算法中,精英主义是指直接晋升到下一代的人口子集;正确?

但是,是否有一个特定的术语,例如,当前人口的前75%用于选择,交叉和变异过程而不是整个人群?基本上,这个x%比率叫什么?

我的意思是,而不是使用整个人口的说,一个轮盘赌选择过程中,我只用了前x%(即只品种之间人口的最好的X%)


我问的原因是因为我注意到使用时显着的性能改进(更快的收敛),例如,用于选择,交叉和突变过程的前10-25%的人群用于推进代,而不是使用满人口。

回答

3

一个天真的选择策略,你只需丢弃较弱的候选人有时被称为截断选择。对于许多问题,它会导致过早收敛,尽管我发现它适用于旅行推销员问题。

听起来像你有两阶段策略,首先使用截断选择来消除弱候选者,然后应用更复杂的策略(轮盘?)来完成选择。

与其完全消除弱候选人存活的可能性,选择允许调整该概率的选择策略可能会更好。例如,通过锦标赛选择,您可以调整阈值以确定弱候选人存活的可能性,而不是较强的候选人。

+0

+1是的,这基本上是我在找的东西。干杯! – 2010-12-20 16:17:47

1

这听起来像你只是在谈论一个特定的选择方法。你可以通过扩展你的健身功能来做大致相同的事情,以提高速度而不是线性增加。

这就是说,我会提醒你不要每次都扔掉你的人口的底部。对于较小的遗传算法,这可以让您更快地收敛,但对于现实世界的问题,这往往会使您陷入局部最小化,从而降低解决方案的质量。

也就是说,有一个术语叫decimation。这是当你在交叉和变异之前抛出人口中最低的X%。这通常不是每一代都完成的。为了覆盖更大的搜索空间,并且在X世代之后进行抽取,通常会从难以控制的大群体开始,因为GA通常在前100个一代左右获得最大收益。然后,继续处理更小,更容易处理的人群。

希望这会有所帮助。

1

没有具体的条款来限制对前x%元素的选择,这只是实施选择策略时必须设置的因素之一。

在某些情况下,您可能会收敛速度更快,但限制x%的数字,但我建议尝试使用不同长度的字符串,并查看这会如何影响收敛。我之前完成了这个工作(参见thisthis项目,都在发展中的字符串),如果您在选择个体时使基因池太小,卡住的可能性可能会随着字符串的长度而增加,原因是你严重影响多样性。