我正在开发一个使用TinyGP的项目。我正在研究TinyGP代码,但它确实“密集”,几乎没有评论。我可以让它根据我的样本数据进化方程式就好了。它们通常是蔓延的方程,它们使梗塞接近我用来生成数据的源方程式。
我无法弄清楚TinyGP实际上是在创建新的随机常量,以及在GP中完成此操作的技术是什么?
答案 0 :(得分:1)
你应该看一下Genetic Programming Field Guide
。它解释了其中一些。不同的GP使用不同的技术来生成常量。在TinyGP中,他们是“终端机”的一部分。 TinyGP在一开始就生成它们。所以它们是固定的。新的“常数”是通过变异和交叉创造的。
也许1,2和10在你的常数集中。您可以将常量1作为终端节点。突变可能使这个“1/2”,现在你有.5。进一步的突变可能会改变为“1/2/10”。现在你有0.05。完整的树仍然贯穿每一步。这就是TinyGP如何有效地获得更多恒定值。
这会产生像你注意到的庞大方程式。重写规则可以帮助解决这个问题。但是,您需要考虑何时重写。最后重写可以给你更好看的方程式。随你重写会给你更小的树,这可能会阻止TinyGP创建更丰富的常量集,因为现在有更少的分支可以变异并交叉到。
一个非常简单的重写规则有助于压缩所有常量值。例如,如果在节点下没有检测到变量,只需计算它并替换为计算值。对于TinyGP,最后只能这样做,因为你不能随意引入新的常量节点。