有人可以帮助我了解与进化算法相关的表型和基因型的定义吗?

我认为基因型是解决方案的代表,对吗?表型是解决方案本身吗?

谢谢

最佳答案

摘要:对于简单的系统,是的,您是完全正确的。随着您进入更复杂的系统,事情变得更加困惑。

这可能是大多数阅读此问题的大多数人都需要知道的。但是,对于那些关心的人,有一些奇怪的微妙之处:

研究进化计算的人令人沮丧地不一致地使用了“基因型”和“表型”。在所有系统上都适用的唯一规则是,基因型是比表型更低级别(即,抽象程度更低)的编码。 该规则的结果是,通常可以有多个基因型映射到相同的表型,但并非相反。在某些系统中,您实际上只提到了两个抽象级别:解决方案的表示形式和解决方案本身。在这些情况下,您完全正确的是前者是基因型,后者是表型。

这适用于:

  • 简单的遗传算法,其中解决方案被编码为位串。
  • 简单的进化策略问题,其中演化出实值向量并将数字直接插入正在优化的函数
  • 在解决方案编码和解决方案之间有直接映射的各种其他系统。

  • 但是,当我们使用更复杂的算法时,这开始崩溃了。考虑一个简单的遗传程序,我们正在其中进化一个数学表达式树。树计算得出的数字取决于其接收到的输入。因此,虽然基因型是明确的(这是树中的节点序列),但只能针对特定输入定义表型。 并不是什么大问题-我们只选择一组输入,然后根据一组对应的输出定义表型。但情况变得更糟。

    随着我们继续研究更复杂的算法,我们遇到了不再只有两个抽象级别的情况。进化算法通常用于为自治代理进化简单的“大脑”。例如,假设我们正在使用NEAT演化神经网络。 NEAT非常清楚地定义了基因型:用于构建神经网络的一系列规则。这是有道理的-它是该系统中个人的最低级别编码。 NEAT的创建者Stanley 继续将表型定义为由该基因型编码的神经网络。 足够公平-的确是一个更抽象的表示。但是,还有其他研究进化的大脑模型的人将神经网络分类为基因型,将行为分类为表型。这也是完全合理的-行为甚至可能是更好的表型,因为选择实际上是基于它的。

    最后,我们得出系统和可定义的基因型和表型最少的系统:开放式人工生命系统。这些系统的目标基本上是创建一个丰富的世界,该世界将孕育有趣的进化动力学。通常,这些系统中的基因型很容易定义-这是定义种群成员的最低水平。也许像Avida那样是一堆汇编代码,或者像geb那样是神经网络,或者是一些规则集。凭直觉,表型应该反射(reflect)出人口中一生的行为。但是人口的每个成员都做很多不同的事情。因此,最终,在这些系统中的,表型倾向于根据给定实验中正在研究的内容进行不同的定义。 虽然乍一看这可能令人怀疑,但从本质上讲,这也是如何在进化生物学中讨论表型的。在某个时候,系统足够复杂,您只需要关注您所关心的部分即可。

    关于evolutionary-algorithm - 表型和基因型的定义,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/30002900/

    10-12 03:50