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

66

遗传算法进化算法之间有差异吗?

我读过多篇论文,谈到了遗传或进化算法,虽然非常相似,但我认为它们可能并不完全相同。

5个回答

69

遗传算法是一种进化算法的类别。虽然遗传算法是最常见的进化算法类型,但还有其他类型,例如演化策略。因此,进化算法包括遗传算法等更多类型。


似乎遗传算法与(μ/ρ+, λ)-ES相同。两者都包括选择、变异和重组操作。两者都使用种群,并在代际中迭代改进。我无法弄清楚它们之间的区别。 - AnnanFay

19

遗传算法使用交叉(因此在名称中有“基因”一词)和变异来搜索可能解决方案的空间。

进化编程主要使用变异。

正如已经发布的那样,两者都是进化算法的类型。


2
问题是关于遗传算法和进化算法的区别,但这似乎回答了“遗传算法和进化编程之间的区别是什么?”这个问题。 - nbro

7

来自Z. Michalewicz 1996年的《遗传算法+数据结构=进化程序》[p.289]:

进化程序大量借鉴了遗传算法。然而,它们通过使用“自然”数据结构和问题敏感的“遗传”运算符来结合特定于问题的知识。遗传算法和进化程序的基本区别在于前者被归类为弱、问题无关的方法,而后者则不是。

因此,遗传算法应该能够解决任何EP/EA解决的问题,但EP/EA不能解决GA解决的所有问题。当然,GA的广泛性付出的代价是效率。

此外,似乎如果候选解不能直接相互交换信息,则算法不是EA/EP(D. Simon 2013 - "Evolutionary Optimization Algorithms" [p.243])。

PS: D. Simon 2013 - "Evolutionary Optimization Algorithms" 是一本非常棒的书!


6
遵循进化法则的算法被称为“进化算法”。进化算法有两个子类。第一个是遗传算法,它使用交叉和变异作为遗传算法运算符。第二个是进化编程,它只使用变异作为其运算符。

0

进化策略(Rechenberg 1973)和遗传算法(Holland 1975)基于达尔文的进化理论。 进化策略是进化计算的基础,因此也是进化算法的一种。与EA相比,GA在计算表示(基因型)和其真实世界表示(表现型)方面需要使用遗传表示。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接