遗传算法和进化策略有什么区别?

时间:2011-10-16 20:51:00

标签: genetic-algorithm evolutionary-algorithm

我已经阅读了几本书的介绍部分以及关于这两个主题的一些论文,并且我认为这两种方法几乎完全相同。也就是说,我还没有时间对主题进行深入研究,所以我可能错了。

遗传算法和进化策略之间有什么区别?是什么让他们与众不同,他们在哪里相似?

5 个答案:

答案 0 :(得分:22)

在进化策略中,个体被编码为实数的向量。在复制时,父母是随机选择的,最适合的后代被选中并插入下一代。 ES个体是自我适应的。步长或'#34;突变强度"在个体中进行编码,因此通过选择优秀的个体,良好的参数可以进入下一代。

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

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

答案 1 :(得分:3)

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

关于父母选择,GA有许多不同的策略。我不知道所有这些,但我认为所有选择(不仅是最好用于某些应用程序)。

答案 2 :(得分:1)

在研究演进策略(ES)时,偶然发现了这个问题。

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

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

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

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

正在选择,变异,重组一起的这两个向量。

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

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

您可以在此处找到更详细的说明(请参阅第3章):Evolution strategies. A comprehensive introduction

答案 3 :(得分:0)

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

答案 4 :(得分:0)

维基百科消息来源(http://en.wikipedia.org/wiki/Genetic_algorithm)和@Vaughn Cato表示,两种技术的差异都依赖于实施。 EA使用 实数和GA使用整数。

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