表型和基因型的定义

Definitions of Phenotype and Genotype

谁能帮我理解与进化算法相关的表型和基因型的定义?

我是否认为基因型是解决方案的代表?表型就是解决方案本身?

谢谢

总结:对于简单的系统,是的,你是完全正确的。当您进入更复杂的系统时,事情会变得更加混乱。

这可能是大多数阅读此问题的人需要知道的全部内容。然而,对于那些关心的人来说,有一些奇怪的微妙之处:

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

这适用于:

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

但是当我们使用更复杂的算法时,这就开始崩溃了。考虑一个简单的遗传程序,其中我们正在进化一个数学表达式树。树评估的数字取决于它接收到的输入。因此,虽然基因型很清楚(它是树中的一系列节点),但只能根据特定输入来定义表型。这并不是什么大问题 - 我们只需 select 一组输入并根据相应的输出集定义表型。但情况变得更糟。

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

最后,我们得出 具有最少可定义基因型和表型的系统:开放式人工生命系统 。这些系统的目标基本上是创造一个丰富的世界,以培养有趣的进化动力。通常这些系统中的基因型很容易定义——它是定义种群成员的最低级别。也许它是一串汇编代码,如 Avida, or a neural network, or some set of rules as in geb。直觉上,表型应该捕捉到某个群体成员在其一生中所做的事情。但是人口中的每个成员都会做很多不同的事情。所以最终,在这些系统中,表型往往会根据给定实验中研究的内容进行不同的定义。虽然乍一看这似乎有问题,但本质上是表型在进化生物学也是如此。在某些时候,系统已经足够复杂,您只需要专注于您关心的部分。