进化算法“方法”之间的主要区别是什么?

Eiy*_*uyf 3 artificial-intelligence evolutionary-algorithm

所以我正在阅读进化算法并且很困惑。

我相信在现代,进化编程、进化策略和遗传算法之间的“传统”差异是什么?

我的理解是遗传算法会改变“基因”以产生结果,进化策略会改变参数,从而以某种方式改变个体。完全numerical parameters按照(http://en.wikipedia.org/wiki/Evolutionary_algorithm)是什么意思 ?那么进化规划主要因实数的变异而变化?

进化编程和遗传编程是寻找解决问题的程序的方法,而遗传算法和进化策略是使用候选人寻找问题解决方案的方法吗?我看不到这种区别,我在进化策略与遗传算法中看到的唯一区别是参数列表与染色体以及实数与整数?

谢谢。

Jer*_*NER 5

希望这会为你澄清一些事情:

进化算法:尝试在给定的候选解决方案群中找到“最适合”的解决方案的算法。该算法从随机候选开始,并尝试通过复制、变异、重组和选择从那里进化

从那里,您有几种“标准方式”来调用几个进化算法系列。这些论文的名字是由学术研究给出的;我相信命名约定中的细微差异既来自微妙的原因,也来自随着时间的推移缺乏可用的词汇:

  • 遗传算法:给定的种群被定义为“一串数字”(传统上是一个 0 和 1 的向量)。

  • 遗传编程:给定的种群是一组结构不同的计算机程序。问题是哪个程序最适合解决给定的问题。如果你熟悉 Lisp 处理,你就会知道整个程序可以表示为一棵树;想象一下,您的算法对这些树进行了变异或重组。您最终会从最初的候选人中发展出许多程序,其中一些程序在解决您的问题方面会比其他程序更好。

  • 进化编程:给定一个具有固定结构但参数的特定计算机程序,所研究的种群是通过这些参数的变化获得的程序集。例如,如果您认为您的问题可以用有限状态机来表示,则该技术可以帮助您找到状态数量、状态之间的授权转换以及这些转换的概率。

  • 进化策略:给定的种群是一个实数向量+参数,如研究候选者之间的突变率试图达到最优。想象一下,您从一组 (c1,c2,c3) 3 维向量开始。在每一代你通过向 c1、c2 和 c3 添加一个随机值来改变它们。随机值可能基于具有标准偏差 S 的高斯。从 S 的大值开始可能会很有趣,这样突变会在所有地方产生向量,一旦你开始找到感兴趣的向量,你就开始减少 S为了“关注”这些有趣的向量。

请记住,这些名称只是命名约定。有些擅长描述它们的含义,有些则不太优化。人工智能领域的进化命名仍在进行中;-)