首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >语法演变(GE)

语法演变(GE)
EN

Stack Overflow用户
提问于 2017-03-06 22:04:36
回答 1查看 268关注 0票数 0

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

  1. 当个体的长度是自适应的时候,最常用的策略是什么?换句话说,个体的长度是如何进化的。
  2. 它是增加或缩小了大小还是只是增加了。
  3. 是否有任何详细的记录或说明性的例子。

提前谢谢。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-03-07 21:16:37

在通用电气,个人是必要的可变长度,以便能够编码程序(结构)的可变长度。

Initialization

最初的人口已经由不同规模的个人组成。初始化过程可能会有所不同,但我最熟悉的一个过程是使用语法来创建个人。基本上,当您想要将个人解码到程序中(使用语法)时,您所做的事情是相同的,但是您没有选择使用个人的语法展开,而是采用相反的方式--您随机选择展开并记录这些随机决策。当扩张完成后,你记录下来的决定就形成了一个个体。

交叉

GE中的交叉算子已经修改了个体的长度。这是一个经典的单点交叉,但交叉点是完全随机选择的父母双方(与传统的单点交叉的气体,父母是相同的长度和交叉点是对齐的)。这种机制既能使个体生长,又能使个体萎缩。

交叉的例子:假设你有两个个体,你随机选择了交叉点。

代码语言:javascript
复制
parent 1:  XXXXXXXXXXXX|XXXX
parent 2:  YYY|YYYYYYYYYYYYYYYYYYYYYY

在交叉之后,孩子们长得像这样

代码语言:javascript
复制
parent 1:  XXXXXXXXXXXX|YYYYYYYYYYYYYYYYYYYYYY
parent 2:  YYY|XXXX

正如你所看到的,个体的长度发生了巨大的变化。

剪枝

然而,还有第二种机制只用于缩短长度。这是修剪操作符。当这个操作符被调用时(以同样的方式调用突变),删除基因型的非活动部分(即,如果语法扩展在所有密码子被使用之前完成,其余部分是非活动部分)。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42636485

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档