在遗传算法中仅选择顶部x%进行选择

时间:2010-12-13 03:40:00

标签: genetic-algorithm

我目前正在研究StringEvolver,我不太确定可以在GA中使用的特定术语。

在遗传算法中, elitism 指的是直接升级到下一代的人口子集;正确的吗?

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

我的意思是,不是使用整个人群来说,轮盘赌选择过程,我只使用前x%(即仅在最佳x%人口中繁殖)


我问的原因是因为我注意到在使用例如最高10-25%的人口进行选择,交叉和突变过程以提高代数而不是使用人口众多。

3 个答案:

答案 0 :(得分:3)

您简单地丢弃较弱候选者的天真选择策略有时称为截断选择。对于许多问题,它会导致早熟收敛,尽管我发现它对旅行商问题很有效。

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

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

答案 1 :(得分:1)

听起来你只是在谈论一种特定的选择方法。你可以通过扩展你的适应度函数来做大致相同的事情,以更高的速度而不是线性地增加。

那就是说,我会警告不要每次都把人口的底部丢掉。对于较小的GA,这将使您能够更快地收敛,但对于现实世界的问题,这往往会使您陷入局部最小化,从而降低解决方案的质量。

那就是说,有一个叫做抽取的术语。这是当您在交叉和变异之前丢掉最低X%的人口时。通常每一代都不会这样做。你通常会从一个难以置信的大量人口开始,以便覆盖更大的搜索空间,然后在X世代之后进行抽取,因为GA通常会在前100个左右中获得最大的收益。然后,您将继续处理较小的,更容易处理的人口。

希望这会有所帮助。

答案 2 :(得分:1)

没有特定的术语来限制对顶部x%元素的选择,这只是实施选择策略时必须设置的因素之一。

在某些限制x%数字的情况下,您可能会获得更快的收敛,但我建议尝试使用不同长度的字符串,看看它如何影响收敛。我之前已经完成了这项工作(参见thisthis项目,两者都是关于进化的字符串),如果你在选择个体时使基因库太小,那么卡住的可能性可能会随着字符串的长度,原因是你严重损害了多样性。