2011-10-16 73 views
13

我已经阅读了几本书的介绍性部分以及关于这两个主题的一些论文,并且在我看来,这两种方法几乎完全相同。遗传算法和进化策略有什么区别?

这就是说我没有时间去深入研究这些话题,所以我可能是错的。

遗传算法和进化策略之间的区别是什么?是什么让他们不同,他们在哪里相似?

回答

19

在ES中,个体被编码为实数的向量。在繁殖时,随机选择父母,选择适合的后代并插入下一代。 ES个体是自适应的。步长或突变强度在个体中被编码,所以通过选择好的个体,好的参数到达下一代。

在GA中,个体被编码为整数。选择是通过选择与他们的健身成比例的父母来完成的。因此,在第一次选择完成之前,必须对个人进行评估。遗传操作符在比特级上工作(例如,将一个比特串切成多个片段并将它们与另一个父片段或切换单个比特交换)。

这就是理论。在实践中,有时很难区分两种演化算法,并且需要创建混合算法(例如编码遗传算子参数的整数(比特串)个体)。

+2

我认为答案有点过于笼统,因为标准和原始GA遗传表示不是整数,而是一个1和0的二进制位串。另外,选择不限于健身比例选择,还有很多其他比如锦标赛...为了避免混淆,也许答案应该被略微改写,而不是推断GA必须有这个和那个...等等 – chutsu

+0

我认为这是对差异的一个很好的介绍。将表示法称为整数集有什么问题?在软件层面,算法正是如何处理这些数据,并有助于将它们视为与遗传密码相似。一般的建议是不要把表现形式作为一个字符串来处理,至少我是这样训练的。 – Adam893

+0

您可以举个例子,说明ES和GA通常在哪里应用? –

0

作为维基源(HTTP:/ /en.wikipedia.org/wiki/Genetic_algorithm)和@Vaughn Cato说这两种技术的区别在于实现。 EA使用 实数和GA使用整数。

但是,在实践中,我认为你可以使用整数或实数来表达你的问题和你的程序。这取决于你。例如,对于蛋白质折叠,你可以说一组二面角形成一个矢量。这是一个实数的矢量,但条目 标有整数,所以我认为你可以用你的问题来形成你的问题,并在整数算术上编写基于 的程序。这只是一个想法。

2

在大多数较新的GA教科书中,引入实数编码作为整数的替代,即个体可以编码为实数的向量。这被称为连续参数GA(参见例如Haupt & Haupt,“Practical Genetic Algorithms”,J.Wiley & Sons,1998)。所以这与ES实数编码几乎相同。

关于父母选择,针对遗传算法发布了许多不同的策略。我不知道他们全部,但我假设所有选择(不仅最好的已被用于某些应用程序)。

相关问题