遗传算法和进化策略有什么区别?

Tra*_*isG 19 genetic-algorithm evolutionary-algorithm

我已经阅读了几本书的介绍部分以及关于这两个主题的一些论文,并且我认为这两种方法几乎完全相同.也就是说,我还没有时间对主题进行深入研究,所以我可能错了.

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

Ste*_*han 23

在进化策略中,个体被编码为实数的向量.在复制时,父母是随机选择的,最适合的后代被选中并插入下一代.ES个体是自我适应的.步长或"突变强度"在个体中编码,因此通过选择好的个体,良好的参数可以进入下一代.

在遗传算法中,个体被编码为整数.通过选择与其适合度成比例的父母来完成选择.因此,必须在第一次选择完成之前对个人进行评估.遗传算子在比特级上工作(例如,将比特串切成多个部分,并将它们与另一个父部分交换或切换单个比特).

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

  • 考虑到标准和原始GA遗传表示不是整数,而是一个1和0的二进制位串,我认为答案有点过于笼统.选择也不仅限于健身比例选择,还有许多其他比如锦标赛......为避免混淆,可能答案应该略有不同,而不是推断GA必须有这个和那个...等 (4认同)

小智 6

在研究进化策略(ES)时偶然发现了这个线程。

正如 Paul 之前注意到的,这里的编码并不是真正的区别,因为这是特定算法的实现细节,尽管它在 ES 中似乎更常见。

为了回答这个问题,我们首先需要退后一步,看看 ES 算法的内部结构。在ES中有一个进化的内生参数和外生参数的概念。内生参数与个体相关联,因此与个体一起进化,外生参数从“外部”提供(例如,由开发人员设置常量,或者可以存在根据迭代号设置其值的函数/策略)。

因此,个体k由两部分组成:

  • y(k) - 一组对象参数(例如实数/整数值的向量),表示个体基因型
  • s(k) - 一组策略参数(例如再次实数/整数值的向量),例如可以控制突变的统计特性)

这两个载体正在被选择、变异、重组在一起

GA 和 ES 之间的主要区别在于,经典 GA 中算法参数的类型没有区别。事实上,所有参数都是从“外部”设置的,因此在 ES 术语中都是外生的。

还有其他一些细微的差异,例如,在 ES 中,选择策略通常是一种且相同的,而在 GA 中,有多种可以互换的不同方法。

你可以在这里找到更详细的解释(参见第 3 章):进化策略。全面介绍