语法进化 (GE)

Grammatical Evolution (GE)

在语法进化(GE)算法中(这里是网络:grammatical-evolution.org)有一个选项可以使个体的长度自适应。我想知道:

  1. 个体长度自适应时最常用的策略是什么。也就是说,个体的长度是如何进化的。
  2. 它是增大还是减小尺寸还是只是增大。
  3. 是否有任何有据可查的或说明性的例子。

提前致谢。

在 GE 中,为了能够对可变长度的程序(结构)进行编码,个体是必需的 variable-length。

初始化

初始种群已经由不同大小的个体组成。初始化过程可能会有所不同,但我最熟悉的是使用语法来创建个体。你基本上做同样的事情,当你想将个体解码到程序中(使用语法)但是你不是选择使用个体的语法扩展,而是相反 - 你随机选择扩展并记录这些随机决定。扩展完成后,您的记录决定将形成一个个体。

交叉

GE中的交叉算子已经修改了个体的长度。这是一个经典的 single-point 交叉,但是交叉点在 parents 中完全随机选择(与来自 GA 的经典 single-point 交叉相反,其中 parents 是相同的长度和交叉点对齐)。这种机制能够使个体增长和缩小。

交叉示例:假设您有两个人并且您随机选择了交叉点

parent 1:  XXXXXXXXXXXX|XXXX
parent 2:  YYY|YYYYYYYYYYYYYYYYYYYYYY

交叉后,children看起来像这样

parent 1:  XXXXXXXXXXXX|YYYYYYYYYYYYYYYYYYYYYY
parent 2:  YYY|XXXX

如您所见,个体的长度发生了巨大变化。

修剪

但是,还有第二种机制仅用于减少长度。它是修剪操作符。此运算符在被调用时(有概率,以相同的方式例如调用突变)删除 non-active 部分(即,如果语法扩展在所有密码子被使用之前完成,则剩余部分是 non-active部分)基因型。