遗传编程(GP)中的标准表示树是否包含运算符,如果那么?

时间:2017-01-05 15:04:09

标签: tree genetic-programming evolutionary-algorithm genetic

阅读表示树,几乎所有的文本都只包含数字运算符,如加号,减号,次数等等。但是,有一些随便有“if then”运算符。我真的很困惑这是通过每个版本的表示树共享它还是只是少量程序所拥有的。

1 个答案:

答案 0 :(得分:0)

绝对可以使用if作为树中允许的功能之一,但有一个问题。通常if需要三个输入:condition,then-result和else-result。通常那些是不同类型的 - 条件是布尔值,然后 - 结果/否 - 结果是其他(数字)。如果在树中插入此类if,则会破坏类型一致性 - 并非每个子树都会生成相同类型的结果。这会导致例如交叉的困难,因为您不能只使用if的任何子树并将其替换为来自第二个父级的一些随机子树 - 它可能是错误的类型。

所以常见的解决方案是:

  • 要么使交叉/变异操作符类型感知;
  • 或使用某种类型一致的if;例如,您可以将if视为具有4个数字输入f(a, b, c, d)的函数,如果c则返回a > b,否则返回d。在这种情况下,所有子树仍然期望产生相同类型的值,并且不需要额外摆弄交叉和变异。当然,您可以将此简化为三输入if:如果b为正,则返回a,否则为c。但是,据我所知,这种方法通常被认为(至少在some literature,第3.2.1节中)为“可能引入意外偏差”,不推荐超过4输入if