我已经阅读了几本书的介绍部分以及关于这两个主题的一些论文,并且我认为这两种方法几乎完全相同。也就是说,我还没有时间对主题进行深入研究,所以我可能错了。
遗传算法和进化策略之间有什么区别?是什么让他们与众不同,他们在哪里相似?
答案 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 因此由两部分组成:
正在选择,变异,重组一起的这两个向量。
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使用整数。
然而,在实践中,我认为您可以在问题的制定和程序中使用整数或实数。这取决于你。例如,对于蛋白质折叠,您可以说这组二面角形成一个向量。这是一个实数的向量,但条目 用整数标记,所以我认为你可以制定你的问题,并根据你的程序编写程序 在整数运算上。这只是一个想法。