3

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

进化编程,进化策略和遗传算法之间的“传统”差异是什么,因为我相信在现代它们基本上已经融合到同一件事上?

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

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

谢谢。

4

1 回答 1

5

希望这将为您澄清一些事情:

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

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

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

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

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

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

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

于 2012-05-31T20:23:15.873 回答