遗传算法和进化算法有区别吗?
我读过多篇关于遗传或进化算法的论文,虽然非常相似,但我认为它们可能不是一回事。
遗传算法和进化算法有区别吗?
我读过多篇关于遗传或进化算法的论文,虽然非常相似,但我认为它们可能不是一回事。
遗传算法是一类进化算法。虽然遗传算法是最常遇到的进化算法类型,但还有其他类型,例如进化策略。因此,进化算法包括遗传算法等等。
遗传算法使用交叉(因此名称中的“基因”)和变异来搜索可能解决方案的空间。
进化编程主要使用突变。
如前所述,两者都是进化算法的类型。
来自 Z. Michalevicz 1996 - “遗传算法 + 数据结构 = 进化程序” [p.289]:
进化程序大量借鉴了遗传算法。然而,它们通过使用“自然”数据结构和对问题敏感的“遗传”运算符来整合特定问题的知识。GAs 和 EPs 之间的基本区别在于前者被归类为弱的、与问题无关的方法,而后者则不是。
所以一个 GA 应该能够解决一个 EP/EA 解决的任何问题,但是一个 EP/EA 将不能解决 GA 解决的所有问题。当然,为 GA 的普遍性付出了效率。
此外,如果候选解决方案不直接相互交换信息,则算法似乎不是 EA/EP(D. Simon 2013 -“进化优化算法” [p.243])。
PS:D. Simon 2013 - “进化优化算法”是一本很棒的书!
我知道这个线程很旧,但我自己很难从一个地方理解它,因此在这里解释它。遵循进化定律的算法称为“进化算法”。EA有两个子类。一是使用交叉的遗传算法,以及变异作为遗传算法的算子。二是进化编程,它只使用变异作为算子。
进化策略 (Rechenberg 1973) 和遗传算法 (Holland 1975) 基于达尔文进化论。进化策略是进化计算的基础,因此是进化算法。原则上,遗传算法 (GA) 是 EA 的一个子类。
与 EA 相比,GA 需要在计算表示(基因型)及其现实世界表示(表型)的意义上使用遗传表示。