遗传算法和进化算法之间有区别吗?
我已经阅读过多篇论文,谈论遗传算法或进化算法,虽然非常相似,但我认为它们可能不是一回事。
答案 0 :(得分:54)
遗传算法是一类进化算法。尽管遗传算法是最常遇到的进化算法类型,但还有其他类型,例如Evolution Strategy。因此,进化算法包括遗传算法等等。
答案 1 :(得分:14)
遗传算法使用交叉(因此名称中的'基因')和突变来搜索可能解决方案的空间。
进化编程主要使用突变。
已发布,两者都是进化算法的类型。
答案 2 :(得分:7)
来自Z. Michalewicz 1996 - “遗传算法+数据结构=进化计划”[p.289]:
进化计划大量借鉴遗传算法。然而, 它们通过使用“自然”数据来结合特定于问题的知识 结构和对问题敏感的“遗传”算子。基础的 GAs和EP之间的区别在于前者被归类为 弱的,与问题无关的方法,而不是这种情况 后者。
因此,GA应该能够解决使用EP / EA解决的任何问题,但EP / EA将无法解决GA解决的所有问题。 当然,人们为GA的普遍性付出了高效的代价。
此外,如果候选解决方案不直接相互交换信息(D. Simon 2013 - "Evolutionary Optimization Algorithms" [p.243]),似乎算法不是EA / EP。
PS:D. Simon 2013 - "Evolutionary Optimization Algorithms"是一本令人惊叹的书!
答案 3 :(得分:2)
我知道这个线程很旧,但是我自己很难从一个地方理解它,因此在这里进行解释。 遵循进化定律的算法称为“进化算法”。 EA有两个子类。一是利用交叉作为变异算子的遗传算法,二是进化编程,只将变异作为算子。
答案 4 :(得分:0)
进化策略(Rechenberg 1973)和遗传算法(Holland 1975)是基于达尔文进化论的。进化策略是进化计算的基础,因此也是进化算法的基础。在原则上,遗传算法(GA)是EA的子类。
与EA相比,GA在计算表示形式(基因型)及其现实表示形式(表型)的意义上要求使用遗传表示形式。