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

时间:2012-05-31 19:34:39

标签: artificial-intelligence evolutionary-algorithm

所以我正在阅读进化算法并感到困惑。

进化规划,进化策略和遗传算法之间的“传统”差异是什么?我相信在现代它们已基本融合到同一个东西?

我的理解是遗传算法改变'基因'以产生结果,进化策略改变参数以某种方式改变个体。根据(http://en.wikipedia.org/wiki/Evolutionary_algorithm)确切地说numerical parameters是什么意思?那么进化规划主要因实数变异而变化?

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

感谢。

1 个答案:

答案 0 :(得分:4)

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

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

从那里,你有几种调用几个进化算法家族的“标准方法”。学术研究给出了这些名称;我相信命名惯例的细微差别既有微妙的原因,也有时间依赖的词汇量不足:

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

  • 遗传编程:给定的群体是一组结构不同的计算机程序。问题是哪个程序是解决特定问题的“最佳选择”。如果您熟悉Lisp处理,您将知道整个程序可以表示为树;想象一下,你的算法会改变或重组这些树。你最终将会有很多程序从原来的候选人中脱颖而出,有些人会比其他人更好地解决你的问题。

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

  • 进化策略:给定的群体是实数的向量+参数,例如研究的候选者中的突变率试图达到最优。想象一下,你从一群(c1,c2,c3)三维向量开始。在每一代,你通过向c1,c2和c3添加一个随机值来改变它们。随机值可以基于具有标准偏差S的高斯值。从S的大值开始可能是有趣的,因此突变将在整个地方产生向量,并且一旦开始找到有趣的向量,就开始减少S为了“聚焦”这些有趣的载体。

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