28

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

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

4

5 回答 5

24

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

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

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

于 2011-10-20T08:57:07.553 回答
4

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

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

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

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

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

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

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

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

你可以在这里找到更详细的解释(见第 3 章):进化策略。全面的介绍

于 2019-01-09T09:43:50.400 回答
3

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

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

于 2013-05-08T11:30:53.887 回答
1

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

于 2011-10-16T21:05:48.597 回答
0

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

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

于 2011-10-18T01:38:28.410 回答