进化计算中非常令人讨厌的一点是,稍微不同且重叠的概念往往会选择截然不同的名称。因此,我最近的困惑是基因表达编程似乎与笛卡尔遗传编程非常相似。
最佳答案
好吧,似乎基因表达编程(GEP)与笛卡尔遗传编程(CGP或我认为的经典遗传编程)之间存在一些差异,但这种差异可能比实际值要大。请注意,我从未使用过GEP,因此我的所有评论均基于我在CGP方面的经验。
在CGP中,基因型和表型之间没有区别,换句话说,如果您正在查看CGP的“基因”,那么您也在查看它们的表达。此处没有编码,即表达树就是基因本身。
在GEP中,基因型被表达为表型,因此,如果您查看基因,您将不容易知道该表达将是什么样。 GP的“发明人”CândidaFerreira写了really good paper,有些other resources试图对整个概念进行更简短的概述。
Ferriera说好处是“显而易见的”,但我真的看不到有什么能使GEP优于CGP。显然,GEP是多基因的,这意味着性状(即表达树)的表达涉及多个基因。无论如何,适应度是在表示的树上计算的,因此看起来GEP并没有采取任何措施来增加适应度。作者声称,GEP提高了达到适应性的速度(即世代较少),但是坦率地说,您可以通过使用不同的选择算法,不同的锦标赛结构,将人口进入部落,在部落之间迁移标本,包括适应度的多样性等。
选择:
比赛频率:
比赛结构:
部落
人口可以分为彼此独立发展的部落:
多样性健身
将多样性纳入适应度中,您可以计算出多少个人具有相同的适应度值(因此可能具有相同的表型),并通过成比例的值(value)来惩罚其适应度:具有相同适应度值的个体越多,对这些人。这样,将鼓励具有独特表型的标本,因此种群的停滞将大大减少。
这些只是可能严重影响CGP性能的一些因素,当我大声说时,我的意思是它的值(value)与Ferriera的性能相同或更高。因此,如果Ferriera不对这些想法进行过多修改,那么她可能会发现CGP的性能要慢得多……尤其是如果她没有采取任何措施来应对停滞不前的情况。因此,在阅读GEP的性能统计信息时,我会格外小心,因为有时人们无法说明那里提供的所有“优化”。
关于genetic-programming - 基因表达程序设计与笛卡尔遗传程序设计之间的区别,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/3475868/