遗传算法和进化算法之间有差异吗?
我读过多篇论文,谈到了遗传或进化算法,虽然非常相似,但我认为它们可能并不完全相同。
遗传算法和进化算法之间有差异吗?
我读过多篇论文,谈到了遗传或进化算法,虽然非常相似,但我认为它们可能并不完全相同。
遗传算法是一种进化算法的类别。虽然遗传算法是最常见的进化算法类型,但还有其他类型,例如演化策略。因此,进化算法包括遗传算法等更多类型。
遗传算法使用交叉(因此在名称中有“基因”一词)和变异来搜索可能解决方案的空间。
进化编程主要使用变异。
正如已经发布的那样,两者都是进化算法的类型。
来自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" 是一本非常棒的书!
进化策略(Rechenberg 1973)和遗传算法(Holland 1975)基于达尔文的进化理论。 进化策略是进化计算的基础,因此也是进化算法的一种。与EA相比,GA在计算表示(基因型)和其真实世界表示(表现型)方面需要使用遗传表示。