在语法进化(GE)算法(此处为网络:grammatical-evolution.org)中,可以选择使个体的长度自适应。我想知道:
提前致谢。
答案 0 :(得分:2)
在GE中,个体是必要的可变长度,以便能够编码可变长度的程序(结构)。
<强>初始化强>
最初的人口已经由不同规模的人组成。初始化过程可能会有所不同,但我最熟悉的程序使用语法来创建个体。你基本上做同样的事情,就像你想要将个人解码到程序中一样(使用语法)而不是选择使用个人的语法扩展,你反过来做 - 你随机选择扩展并记录这些随机决定。扩展完成后,您记录的决策就形成了个人。
<强>交叉强>
GE的交叉运营商已经修改了个人的长度。它是经典的单点交叉,但交叉点在父母双方中完全随机选择(与父母具有相同长度并且交叉点对齐的GA的经典单点交叉相反)。这种机制能够促进个体的成长和收缩。
交叉示例:假设您有两个人并且您随机选择了交叉点
parent 1: XXXXXXXXXXXX|XXXX
parent 2: YYY|YYYYYYYYYYYYYYYYYYYYYY
交叉后,孩子们看起来像这样
parent 1: XXXXXXXXXXXX|YYYYYYYYYYYYYYYYYYYYYY
parent 2: YYY|XXXX
正如您所看到的,个人的长度发生了巨大变化。
<强>修剪强>
但是,还有第二种机制仅用于减少长度。它是修剪操作员。当调用此运算符时(以相同的方式调用例如突变),删除非活动部分(即,如果在使用所有密码子之前语法扩展完成,则剩余部分是非活动部分)基因型。