遗传规划(GP)中的标准表示树是否可以包含诸如if-then之类的运算符



阅读表示树时,几乎所有的文本都只包含数字运算符,如加号、减号、时间等。然而,也有一些随意包含"if-then"运算符。我真的很困惑,这是通过每个版本的表示树共享的,还是只有少量程序拥有的。

使用if作为树中允许的函数之一是肯定可能的,但有一个问题。通常的if有三个输入:条件、结果和其他结果。这些通常是不同类型的——条件是布尔值,然后结果/else结果是其他值(数字)。如果在树中插入这样的if,就会破坏类型一致性——并不是每个子树都产生相同类型的结果。例如,这会给交叉带来困难,因为你不能只取if的任何子树,并用第二个父级的随机子树替换它——它可能是错误的类型。

因此,常见的解决方案是:

  • 要么使交叉/突变运算符具有类型意识
  • 或者使用某种类型一致的CCD_ 5;例如,您可以将if视为具有4个数字输入f(a, b, c, d)的函数,如果a > b返回c,否则返回d。在这种情况下,所有子树仍然期望产生相同类型的值,并且不需要额外的交叉和突变。当然,您可以将其简化为三个输入if:如果a为正,则返回b,否则返回c。然而,据我所知,这种方法通常被认为(至少在一些文献中,第3.2.1节)是"可能引入意外偏差",不建议使用4输入if

最新更新