进化计算中非常令人讨厌的一点是,稍微不同且重叠的概念往往会选择截然不同的名称。因此,我最近的困惑是基因表达编程似乎与笛卡尔遗传编程非常相似。

  • (如何)这些根本不同的概念?
  • 我读过GP指令的间接编码是一种有效的技术(GEP和CGP都可以做到这一点)。是否已经达成某种共识,认为间接编码已经超过了经典树基GP?
  • 最佳答案

    好吧,似乎基因表达编程(GEP)与笛卡尔遗传编程(CGP或我认为的经典遗传编程)之间存在一些差异,但这种差异可能比实际值要大。请注意,我从未使用过GEP,因此我的所有评论均基于我在CGP方面的经验。

    在CGP中,基因型和表型之间没有区别,换句话说,如果您正在查看CGP的“基因”,那么您也在查看它们的表达。此处没有编码,即表达树就是基因本身。

    GEP中,基因型被表达为表型,因此,如果您查看基因,您将不容易知道该表达将是什么样。 GP的“发明人”CândidaFerreira写了really good paper,有些other resources试图对整个概念进行更简短的概述。

    Ferriera说好处是“显而易见的”,但我真的看不到有什么能使GEP优于CGP。显然,GEP是多基因的,这意味着性状(即表达树)的表达涉及多个基因。无论如何,适应度是在表示的树上计算的,因此看起来GEP并没有采取任何措施来增加适应度。作者声称,GEP提高了达到适应性的速度(即世代较少),但是坦率地说,您可以通过使用不同的选择算法,不同的锦标赛结构,将人口进入部落,在部落之间迁移标本,包括适应度的多样性等。

    选择:

  • 随机
  • 轮盘赌轮
  • top-n
  • 取一半
  • 等。

  • 比赛频率:
  • 每个纪元一次
  • 每个数据实例一次
  • 每代一次。

  • 比赛结构:
  • 取3,杀死1并用其他两个的子项替换。
  • 按适合度对锦标赛中的所有个人进行排序,杀死下半部分,然后将其替换为上半部分的后代(其中下半部分表示较差的适应性,上层表示较差的适应性)。
  • 从锦标赛中随机选择个人,以配对并杀死多余的个人。

  • 部落
    人口可以分为彼此独立发展的部落:
  • 迁移-周期性地,一个部落中的个人将被转移到另一个部落
  • 部落在逻辑上是分离的,因此它们就像在不同环境中运行的自己独立的种群一样。

  • 多样性健身
    将多样性纳入适应度中,您可以计算出多少个人具有相同的适应度值(因此可能具有相同的表型),并通过成比例的值(value)来惩罚其适应度:具有相同适应度值的个体越多,对这些人。这样,将鼓励具有独特表型的标本,因此种群的停滞将大大减少。

    这些只是可能严重影响CGP性能的一些因素,当我大声说时,我的意思是它的值(value)与Ferriera的性能相同或更高。因此,如果Ferriera不对这些想法进行过多修改,那么她可能会发现CGP的性能要慢得多……尤其是如果她没有采取任何措施来应对停滞不前的情况。因此,在阅读GEP的性能统计信息时,我会格外小心,因为有时人们无法说明那里提供的所有“优化”。

    关于genetic-programming - 基因表达程序设计与笛卡尔遗传程序设计之间的区别,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/3475868/

    10-09 02:46