遗传算法和进化算法有什么区别?
遗传算法和进化算法之间有区别吗?
我读过多篇关于遗传或进化算法的论文,虽然非常相似,但我认为它们可能不是同一件事。
Is there a difference between genetic algorithms and evolutionary algorithms?
I have read multiple papers, talking about genetic or evolutionary algorithms, and while very similar, I think they may not be the same thing.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(5)
遗传算法是一类进化算法。虽然遗传算法是最常见的进化算法类型,但还有其他类型,例如进化策略。因此,进化算法包含遗传算法等等。
A genetic algorithm is a class of evolutionary algorithm. Although genetic algorithms are the most frequently encountered type of evolutionary algorithm, there are other types, such as Evolution Strategy. So, evolutionary algorithms encompass genetic algorithms, and more.
遗传算法使用交叉(因此名称中的“基因”)和变异来搜索可能解决方案的空间。
进化编程主要使用变异。
正如已经发布的,两者都是进化算法的类型。
Genetic algorithms use crossover (hence the 'gene' in their name) and mutation to search the space of possible solutions.
Evolutionary programming uses primarily mutation.
As posted already, both are types of evolutionary algorithms.
来自 Z. Michalewicz 1996 - “遗传算法 + 数据结构 = 进化程序” [p.289]:
因此,GA 应该能够解决 EP/EA 解决的任何问题,但 EP/EA 无法解决 GA 解决的所有问题。
当然,人们为遗传算法的通用性付出了效率的代价。
此外,如果候选解决方案不直接相互交换信息,则该算法似乎不是 EA/EP (D. Simon 2013 - “进化优化算法” [p.243])。
PS: D. Simon 2013 - “进化优化算法” 是一本很棒的书!
From Z. Michalewicz 1996 - "Genetic Algorithms + Data Structures = Evolution Programs" [p.289]:
So a GA should be able to solve any of the problems one solves with an EP/EA, but an EP/EA won't be able to solve all problems solved by the GA.
Of course, one pays with efficiency for the generality of GA.
Also, it seems that an algorithm is not an EA/EP if candidate solutions do not exchange information directly with each other (D. Simon 2013 - "Evolutionary Optimization Algorithms" [p.243]).
PS: D. Simon 2013 - "Evolutionary Optimization Algorithms" is an AMAZING book!
遵循进化规律的算法被称为“进化算法”。 EA 有两个子类。一是使用交叉和变异作为遗传算法算子的遗传算法。其次,进化编程,仅使用突变作为其运算符。
Algorithms that follow laws of evolution are called "Evolutionary algorithms". There are two sub-classes of EA. One, Genetic Algorithm that uses crossover, along with mutation as GA operators. Second, Evolutionary programming, that uses only mutation as its operator.
进化策略(Rechenberg 1973)和遗传算法(Holland 1975)基于达尔文进化理论。进化策略是进化计算的基础,因此也是进化算法的基础。原则上遗传算法 (GA) 是 EA 的子类。
与 EA 不同,GA 需要使用计算表示(基因型)及其现实世界表示(表型)意义上的遗传表示。
Evolutionary Strategies (Rechenberg 1973) and Genetic Algorithms (Holland 1975) are based on Darwins Evolutionary Theories. Evolutionary Strategies are the basis on Evolutionary Computation, hence Evolutionary Algorithms. In principal genetic algorithms (GA) are a sub-class of EA.
In contrast to EA, GA requires uses genetic representation in the sense of computational representation (genotype) and its real world representation (phenotype).