我想要终端变量具有实值指数(不仅仅是整数)。 例如,假设我想演化一个函数 y = x^3.5 + x^2.2 + 6。我应该如何进行?我还没有看到任何 GP 实现可以做到这一点。 我尝试使用幂函数,但有时初始解决方案具有如此多的指数,以至于评估值超过“双”界限! 任何建议将不胜感激。提前致谢。
最佳答案
DEAP (在 Python 中)实现它。事实上有一个example为了那个原因。通过在原始集中添加来自 Python 的 math.pow,您可以实现您想要的。
pset.addPrimitive(math.pow, 2)
但是使用 pow 运算符,您可能会得到类似 x^(x^(x^(x))) 的结果,这可能是不需要的。您应该添加一个限制(通过某种方式,我不确定),在您的树中允许使用 pow 的位置(就在叶子或类似的东西之前)。
OpenBeagle (在 C++ 中)也允许这样做,但您需要使用 <math.h>
中的 pow 开发自己的原语,您可以使用 Sin 或 Cos 原语作为示例。
关于genetic-programming - 基因编程的代表人物,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10183352/