【问题标题】:What is the main difference between the evolutionary algorithm 'approaches'?进化算法“方法”之间的主要区别是什么?
【发布时间】:2012-06-06 02:17:36
【问题描述】:

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

进化编程、进化策略和遗传算法之间的“传统”区别是什么,因为我相信在现代它们基本上已经趋同于同一个东西?

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

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

谢谢。

【问题讨论】:

    标签: artificial-intelligence evolutionary-algorithm


    【解决方案1】:

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

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

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

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

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

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

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

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

    【讨论】:

    • 我很欣赏进化命名 ;)。您能否详细说明例如为什么您将有大量计算机程序可供选择来“解决”问题(遗传编程)以及为什么/如何帮助选择它们的常数 ex。一个例子?此外,您能否详细说明如何使用进化策略?我不明白为什么进化策略会更好地完成某些事情。参数实数向量会发生变化吗?会发生什么变化?
    • 你好;我尽力添加离现实生活不太远但又足够接近命名“分类”的示例。我无法想象那些第一次尝试对所有动植物进行分类的人当时有多难 - en.wikipedia.org/wiki/Carl_Linnaeus
    • 它们是独立发明的,所以我怀疑有很多冲突。
    • 重组(ES中使用)和交叉(GA中使用)从概念上也有区别。交叉应该将基因合并到一个新的孩子中,这样不会或只有很少的突变发生。突变将被视为不会发生在任何父母身上的基因。重组通常需要多个父母(甚至整个人口)并试图找到某种质心个体。然后这个质心是使用突变对新孩子进行采样的基础。
    猜你喜欢
    • 2012-09-21
    • 1970-01-01
    • 2015-08-22
    • 2015-08-06
    • 2011-03-06
    • 2013-12-23
    • 2017-04-28
    • 2011-04-14
    • 2010-09-17
    相关资源
    最近更新 更多