什么是差异进化以及它与遗传算法相比如何?

时间:2012-02-29 21:20:45

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

从我到目前为止所读到的内容看起来非常相似。 差分进化使用浮点数代替,解决方案称为向量?我不太清楚这意味着什么。 如果有人可以提供一些关于两者的优点和缺点的概述。

2 个答案:

答案 0 :(得分:16)

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

遗传算法与遗传繁殖的隐喻密切相关。甚至语言也大致相同 - 都谈论染色体,谈论基因,基因是不同的字母表,都谈论交叉,交叉相当接近对遗传繁殖的低级理解等。

差异进化的风格相同,但对应关系并不那么精确。第一个重大变化是DE正在使用实际的实数(在严格的数学意义上 - 它们被实现为浮点数,或双数,或者其他什么,但理论上它们在实数范围内。)因此,突变和交叉的想法是截然不同的。到目前为止,变异算子被修改为我甚至很难理解为什么它被称为变异,除此之外,它的目的是将事物从局部最小值中解脱出来。

从好的方面来看,有一些结果显示DEs通常比遗传算法更有效和/或更有效。在进行数值优化时,能够将事物表示为实际的实数而不是必须首先使用染色体类型的表示,这是很好的。 (注意:我已经读过它们了,但我并没有对它们进行过广泛的讨论,因此我无法从第一手资料中做出真正的评论。)

从消极方面来看,我认为DE尚未有任何收敛的证据。

答案 1 :(得分:9)

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

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

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

然而,它仍然存在通常的GA问题,即陷入局部最小值。