【问题标题】:What's differential evolution and how does it compare to a genetic algorithm?什么是差分进化,它与遗传算法相比如何?
【发布时间】:2012-03-19 09:25:34
【问题描述】:

从我目前阅读的内容来看,它们看起来非常相似。 微分进化改用浮点数,解叫向量?我不太确定那是什么意思。 如果有人可以概述一下两者的优缺点。

【问题讨论】:

  • 浮点数没有区别。所有的进化策略都使用浮点数。 EC 的算法不再按其表示来划分类型。

标签: artificial-intelligence genetic-algorithm differential-evolution


【解决方案1】:

嗯,遗传算法和差分进化都是进化计算的例子。

遗传算法与遗传繁殖的比喻非常接近。甚至语言也大体相同——都谈染色体,都谈基因,基因是不同的字母,都谈交叉,交叉相当接近于对基因繁殖的低层次理解等。

微分进化是同一种风格,但对应的不是那么精确。第一个重大变化是 DE 使用的是实际实数(在严格的数学意义上——它们被实现为浮点数、双精度数或其他任何东西,但理论上它们的范围是实数域。)结果, 变异和交叉的思想本质上是不同的。到目前为止,变异算子已经过修改,以至于我什至很难理解为什么它被称为变异,除了它的目的是为了打破局部最小值。

从好的方面来说,少数结果表明 DE 通常比遗传算法更有效和/或更高效。在数值优化中工作时,能够将事物表示为实际的实数,而不是必须首先使用染色体类型的表示,这很好。 (注意:我已经阅读过它们,但我并没有对它们进行过广泛的研究,所以我无法根据第一手资料发表评论。)

不利的一面是,我认为目前还没有任何 DE 收敛的证据。

【讨论】:

  • 补充一点,遗传算法并没有排除实值编码。有像 SBX(模拟二元交叉)这样的交叉运算符,以及以不同方式“混合”双亲的各种想法。实值染色体的突变有几个明显的实现,参数的高斯凸点等。
  • 没错,但离原始概念越远,比喻就越紧张。我不是在诽谤,我认为它们都很有趣和有用,并且都可以合理地称为遗传算法。这只是一个判断/审美要求。
【解决方案2】:

差分进化实际上是更广泛的遗传算法空间的一个特定子集,具有以下限制:

  • 基因型是某种形式的实值向量
  • 突变/交叉操作利用种群中两个或多个向量之间的差异来创建新向量(通常通过将差异的一些随机比例添加到现有向量之一,加上少量随机噪声)

DE 在某些情况下表现良好,因为可以认为向量形成“云”,非常有效地探索解决方案空间的高价值区域。从某种意义上说,它与粒子群优化密切相关。

然而,它仍然存在卡在局部最小值中的常见 GA 问题。

【讨论】:

  • 您是否有参考资料表明 GA 容易陷入局部最小值?
  • 据我了解,GA 特别擅长逃避局部最小值。如果空间非常复杂,可以增加变异算子以迫使 GA 更积极地探索,从而避开这些局部最小值。这显然会消耗更多的处理时间。
猜你喜欢
  • 2012-07-07
  • 2011-02-22
  • 2014-01-01
  • 2011-12-08
  • 1970-01-01
  • 2021-11-21
  • 1970-01-01
  • 2013-09-14
  • 1970-01-01
相关资源
最近更新 更多