Jel*_*lle 12 genetic-programming evolutionary-algorithm
在进化计算中令人讨厌的是,略有不同和重叠的概念倾向于选择截然不同的名称.我最近的困惑是因为基因表达编程似乎与笛卡尔遗传编程非常相似.
好吧,似乎基因表达式编程(GEP)和笛卡尔遗传编程(CGP或我认为是经典的遗传编程)之间存在一些差异,但差异可能比实际应该更加大肆宣传.请注意,我从未使用过GEP,所以我的所有评论都是基于我对CGP的经验.
在CGP中,基因型和表型之间没有区别,换句话说 - 如果您正在查看CGP的"基因",您也会查看它们的表达.这里没有编码,即表达式树是基因本身.
在GEP中,基因型被表达为表型,因此,如果您正在查看基因,您将不会轻易知道表达式将是什么样子.GP的"发明家"CândidaFerreira写了一篇非常好的论文,还有一些其他资源试图对整个概念进行简短的概述.
Ferriera说,好处是"显而易见的",但我真的没有看到任何必然会使GEP比CGP更好的东西.显然GEP是多基因的,这意味着多个基因参与特征的表达(即表达树).在任何情况下,适应度都是在表达的树上计算的,因此GEP似乎没有采取任何措施来增加适应度.作者声称GEP提高了达到适应度的速度(即在更少的世代中),但坦率地说,你可以通过选择不同的算法,不同的锦标赛结构,分裂人口变成部落,在部落之间迁移标本,包括多样性进入适应性等.
选择:
比赛频率:
比赛结构:
部落
人口可以分成独立于彼此的部落:
多样性健身
一体化多样性纳入健身,你算多少人有相同的健身价值(因而很可能有相同的表型),你通过一个比例值惩罚他们的健身:在更多的人用相同的健身价值,更对这些人的处罚.这样就可以鼓励具有独特表型的标本,因此人口的停滞会更少.
这些都只是一些可以极大地影响CGP的性能的东西,当我说我大大意味着它是在相同的顺序或大于Ferriera的性能更高.所以,如果Ferriera没有这些想法鼓捣太多,那么她可能已经看到了CGPS的性能要慢得多......特别是如果她没有做任何事情,以打击停滞.所以阅读GEP性能统计信息时,我会很小心,因为有时候人们没有考虑到所有的"优化"可在那里的.
这些答案似乎有些混乱,必须加以澄清。笛卡尔GP不同于经典GP(又名基于树的GP)和GEP。尽管它们共享许多概念并从相同的生物学机制中汲取灵感,但个体(解决方案)的表示各不相同。
在CGP 中,表示(基因型和表型之间的映射)是间接的,换言之,并非 CGP 基因组中的所有基因都会在表型组中表达(这个概念也存在于 GEP 和许多其他人中)。基因型可以编码在网格或节点阵列中,生成的程序图仅是活动节点的表达。
在GEP 中,表示也是间接的,类似地,并非所有基因都会在表型中表达。这种情况下的表示与 treeGP 或 CGP 有很大不同,但基因型也表示为程序树。在我看来,GEP 是一种更优雅的表示,更容易实现,但也存在一些缺陷,例如:您必须找到特定于问题的合适的尾部和头部大小,mnltigenic 版本有点像表达式树之间的强制胶水,最后它有太多的膨胀。
独立于某些特定问题域中哪种表示可能比另一种更好,它们是通用的,可以应用于任何领域,只要您可以对其进行编码。