【问题标题】:What are the differences between genetic algorithms and evolution strategies?遗传算法和进化策略有什么区别?
【发布时间】:2011-12-08 21:21:31
【问题描述】:

我已经阅读了几本介绍性书籍以及一些关于这两个主题的论文,在我看来这两种方法几乎完全相同。也就是说,我还没有时间真正深入研究这些主题,所以我可能错了。

遗传算法和进化策略有什么区别?是什么让它们不同,它们的相似之处在哪里?

【问题讨论】:

    标签: genetic-algorithm evolutionary-algorithm


    【解决方案1】:

    主要区别似乎是遗传算法使用整数序列表示解决方案,而进化策略使用实数序列 - 参考:http://en.wikipedia.org/wiki/Evolutionary_algorithm#

    【讨论】:

      【解决方案2】:

      正如维基百科来源 (http://en.wikipedia.org/wiki/Genetic_algorithm) 和 @Vaughn Cato 所说,两种技术的区别取决于实现。 EA使用 实数和 GA 使用整数。

      但是,在实践中,我认为您可以在问题的表述和程序中使用整数或实数。这取决于你。例如,对于蛋白质折叠,您可以说一组二面角形成一个向量。这是一个实数向量,但条目 用整数标记,所以我认为你可以制定你的问题并编写基于你的程序 关于整数算术。这只是一个想法。

      【讨论】:

        【解决方案3】:

        在进化策略中,个体被编码为实数向量。在繁殖时,父母被随机选择,最适合的后代被选择并插入下一代。 ES个体是自适应的。步长或“突变强度”被编码在个体中,因此好的参数通过选择好的个体传递给下一代。

        在遗传算法中,个体被编码为整数。选择是通过选择与其适应度成比例的父母来完成的。因此,必须在第一次选择完成之前对个人进行评估。遗传算子在位级别上工作(例如,将位串切割成多个片段并与另一个父级的片段互换或切换单个位)。

        这就是理论。在实践中,有时很难区分这两种进化算法,您需要创建混合算法(例如,对遗传算子的参数进行编码的整数(位串)个体)。

        【讨论】:

        • 我觉得这个答案有点太笼统了,考虑到标准和原始的 GA 遗传表示不是整数,而是 1 和 0 的二进制位串。此外,选择不仅限于健身比例选择,还有许多其他选择,例如锦标赛......为了避免混淆,也许答案应该稍微改一下,而不是推断 GA 必须有这个和那个......等等
        • 我认为这是对差异的一个很好的介绍。将表示称为一组整数有什么问题?在软件级别,这正是算法处理它们的方式,它有助于将它们可视化为类似于遗传密码。一般的建议是不要将表示作为字符串处理,至少我是这样训练的。
        • 你能举个例子吗?ES和GA通常应用在哪里?
        【解决方案4】:

        在大多数关于 GA 的较新教科书中,引入了实值编码作为整数编码的替代方案,即可以将个体编码为实数向量。这称为连续参数 GA(参见例如 Haupt & Haupt,“Practical Genetic Algorithms”,J.Wiley&Sons,1998)。所以这实际上与 ES 实数编码相同。

        关于父母选择,有许多针对 GA 发布的不同策略。我不知道所有这些,但我假设在所有应用中进行选择(不仅最好的已用于某些应用程序)。

        【讨论】:

          【解决方案5】:

          在研究进化策略 (ES) 时偶然发现了这个线程。

          正如 Paul 之前注意到的,编码在这里并没有真正的区别,因为这是特定算法的实现细节,尽管它在 ES 中似乎更常见。

          要回答这个问题,我们首先需要退后一步,看看 ES 算法的内部结构。 在 ES 中有一个内生外生参数的进化参数的概念。内生参数与个体相关,因此与他们一起进化,外生参数是从“外部”提供的(例如,由开发人员设置为常数,或者可以有一个函数/策略根据迭代次数设置它们的值)。

          个体k因此由两部分组成:

          • y(k) - 一组 object 参数(例如,实数/整数值向量),表示个体基因型
          • s(k) - 一组 strategy 参数(例如,又是一个实数/整数值向量),例如可以控制突变的统计特性)

          这两个向量正在被选择、变异、重组一起

          GA 和 ES 的主要区别在于,在经典 GA 中,算法参数的类型没有区别。实际上所有参数都是从“外部”设置的,所以在 ES 中术语是外生的。

          还有其他细微差别,例如在 ES 中,选择策略通常是相同的,而在 GA 中,有多种不同的方法可以互换。

          你可以在这里找到更详细的解释(见第 3 章):Evolution strategies. A comprehensive introduction

          【讨论】:

          猜你喜欢
          • 2011-02-22
          • 1970-01-01
          • 2011-04-18
          • 2015-09-21
          • 2011-05-04
          • 2018-07-30
          • 2017-04-18
          • 1970-01-01
          • 2019-12-05
          相关资源
          最近更新 更多