【问题标题】:Grammatical Evolution (GE)语法进化(GE)
【发布时间】:2017-03-06 22:04:36
【问题描述】:

在语法进化 (GE) 算法(此处为网络:grammatical-evolution.org)中,可以选择使个体的长度自适应。我想知道:

  1. 当个体的长度自适应时,最常用的策略是什么。换句话说,个体的长度是如何演变的。
  2. 它是增加和减少大小还是只是增加。
  3. 是否有任何有据可查或说明性的示例。

提前致谢。

【问题讨论】:

    标签: genetic-algorithm evolutionary-algorithm genetic-programming


    【解决方案1】:

    在 GE 中,个体必须是可变长度的,以便能够对可变长度的程序(结构)进行编码。

    初始化

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

    跨界

    GE 中的交叉运算符已经修改了个体的长度。这是一个经典的单点交叉,但是交叉点在两个父节点中是完全随机选择的(与来自 GA 的经典单点交叉相比,其中父节点长度相同并且交叉点对齐)。这种机制能够使个体成长和缩小。

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

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

    交叉后的孩子是这样的

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

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

    修剪

    但是,还有第二种机制仅用于缩短长度。它是剪枝算子。该运算符在被调用时(有可能,以相同的方式,例如调用突变)删除非活动部分(即,如果语法扩展在所有密码子被使用之前完成,则剩余部分是非活动部分)基因型。

    【讨论】:

    • 谢谢@zegkljan,您的回答非常有用。只有两个最后的问题: 1 - 当个体被创建时,它们是具有相同的长度还是有某种变量来创建具有不同长度的它们。 2 - 一旦它们被创建,有什么机制可以增加个体的大小?例如,用一些 codoms 增加个体的随机概率?
    • @JackGreen 我编辑了答案。希望它现在能展示个体如何通过交叉获得更长的时间以及初始化是如何工作的。
    • 谢谢@zegkljan,精彩的更新。但是,我不完全理解您评论的初始化。您尝试解码一个个体,如果要发生包装,而不是在个体的末尾添加一些密码子(始终避免包装)。是对的吗?您是否使用最大长度或其他内容,因为个人可能会变得非常非常长。
    • @JackGreen 不,您不解码任何内容,而是随机绘制数字然后保存它们。这使得一个人,如果被解码,就会产生相同的程序。是的,这样个人可能会变得非常长,但是您可以通过使用“平衡”的语法来缓解这种情况(参见 Robin Harper 的 paper)。简而言之,平衡文法使得任何非终结符号扩展为自身的概率等于或低于扩展为终结符的概率。如果不是,那么你很可能会逃跑。
    • @zegkljan 人口中的所有个体都有不同的长度吗?例如,如果我的初始种群有 20 个个体,它们的长度是否相同?谢谢。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-03-24
    • 2015-01-11
    相关资源
    最近更新 更多