【问题标题】:Choosing only the top x% for selection in a genetic algorithm在遗传算法中仅选择前 x% 进行选择
【发布时间】:2011-05-24 11:05:51
【问题描述】:

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

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

但是是否有一个特定的术语仅使用当前种群的前 75% 来表示选择、交叉和变异过程,而不是整个种群?基本上,那个 x% 的比率叫什么?

我的意思是,我不使用整个种群来进行轮盘赌选择过程,而是只使用前 x%(即只在种群中最好的 x% 中繁殖)


我问的原因是因为我注意到使用前 10-25% 的人口进行选择、交叉和变异过程来推进生成而不是使用全人口。

【问题讨论】:

    标签: genetic-algorithm


    【解决方案1】:

    一种简单的选择策略,您只需丢弃较弱的候选者,有时称为截断选择。对于许多问题,它会导致过早收敛,尽管我发现它对于旅行商问题非常有效。

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

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

    【讨论】:

      【解决方案2】:

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

      也就是说,我会告诫不要每次都丢弃人口的底部。对于较小的 GA,这将使您更快地收敛,但对于实际问题,这通常会使您陷入局部最小值,从而降低解决方案的质量。

      也就是说,有一个术语叫做抽取。这是当你在交叉和突变之前扔掉底部 X% 的人口的时候。这通常不是每一代都做的。您通常会从一个难以处理的大种群开始,以覆盖更大的搜索空间,然后在 X 代之后进行抽取,因为 GA 通常在前 100 代左右获得最大收益。然后,您继续处理更小、更容易处理的人口。

      希望这会有所帮助。

      【讨论】:

        【解决方案3】:

        没有将选择限制为前 x% 元素的特定术语,它只是您在实施选择策略时必须设置的因素之一。

        在某些限制 x% 数字的情况下,您可能会获得更快的收敛速度,但我建议您尝试使用不同长度的字符串,看看这对收敛有何影响。我以前做过这个(参见thisthis 项目,都是关于进化字符串的),如果你在选择个体时让基因库太小,那么卡住的概率可能会随着字符串的长度而飙升,原因是您严重损害了多样性。

        【讨论】:

          猜你喜欢
          • 2016-07-18
          • 2012-12-10
          • 1970-01-01
          • 2020-08-06
          • 1970-01-01
          • 2014-05-25
          • 2012-02-06
          • 2016-09-11
          • 1970-01-01
          相关资源
          最近更新 更多