【发布时间】:2011-02-22 19:41:59
【问题描述】:
遗传算法和进化算法有区别吗?
我读过多篇论文,谈论遗传或进化算法,虽然非常相似,但我认为它们可能不是一回事。
【问题讨论】:
标签: algorithm genetic-algorithm evolutionary-algorithm
遗传算法和进化算法有区别吗?
我读过多篇论文,谈论遗传或进化算法,虽然非常相似,但我认为它们可能不是一回事。
【问题讨论】:
标签: algorithm genetic-algorithm evolutionary-algorithm
遗传算法是一类进化算法。虽然遗传算法是最常遇到的进化算法类型,但还有其他类型,例如Evolution Strategy。因此,进化算法包括遗传算法等等。
【讨论】:
遗传算法使用交叉(因此名称中的“基因”)和变异来搜索可能解决方案的空间。
进化编程主要使用变异。
正如已经发布的那样,两者都是进化算法的类型。
【讨论】:
来自 Z. Michalewicz 1996 -“遗传算法 + 数据结构 = 进化程序”[p.289]:
进化程序大量借鉴了遗传算法。然而, 他们通过使用“自然”数据来整合特定问题的知识 结构和对问题敏感的“遗传”算子。基础的 GAs 和 EPs 之间的区别在于前者被归类为 弱的,与问题无关的方法,这不是 后者。
因此,GA 应该能够解决使用 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) 基于达尔文进化论。进化策略是进化计算的基础,因此是进化算法。遗传算法 (GA) 原则上是 EA 的一个子类。
与 EA 相比,GA 要求在计算表示(基因型)及其现实世界表示(表型)的意义上使用遗传表示。
【讨论】:
我知道这个帖子很旧,但我自己很难从一个地方理解它,因此在这里解释它。 遵循进化定律的算法称为“进化算法”。 EA有两个子类。一,遗传算法,使用交叉,变异作为遗传算法算子。二,进化编程,只使用变异作为算子。
【讨论】: