首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >遗传编程(GP)中的标准表示树是否包含if then之类的运算符?

遗传编程(GP)中的标准表示树是否包含if then之类的运算符?
EN

Stack Overflow用户
提问于 2017-01-05 23:04:09
回答 1查看 145关注 0票数 1

阅读有关表示树的内容时,几乎所有的文本都只包含数字运算符,如加、减、时间等。然而,有几个人随意使用了"if then“运算符。我真的很困惑这是在每个版本的表示树中共享的,还是只有一小部分程序才有。

EN

回答 1

Stack Overflow用户

发布于 2017-02-23 20:04:13

绝对可以将if用作树中允许的函数之一,但有一个问题。通常的结果有三个输入:if、then-result和else-result。它们通常是不同类型的--条件是布尔型的,然后-result/ else -result是其他类型的(数值)。如果在树中插入这样的if,就破坏了类型一致性--并不是每个子树都会产生相同类型的结果。例如,这会给交叉带来困难,因为您不能简单地将if的任何子树替换为第二个父树中的某个随机子树--它的类型可能是错误的。

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

  • 使交叉/变异操作符类型可识别;

代码或使用某种类型一致的代码;例如,您可以将if视为具有4个数字输入的函数f(a, b, c, d),如果为c,则返回c,否则返回< a > b >d13if>。在这种情况下,所有的子树仍然期望产生相同类型的值,并且不需要额外的交叉和变异。当然,您可以将其简化为三个输入的if:如果a为正,则返回b,否则返回c。然而,据我所知,这种方法通常被认为(至少在some literature的3.2.1节中)是“可能引入意想不到的偏差”,并且不建议在4输入if.上使用

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

https://stackoverflow.com/questions/41488234

复制
相关文章

相似问题

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