如何强类型零参数原语

时间:2019-01-20 20:35:42

标签: python strong-typing genetic-programming deap gp

我正在尝试使用DEAP在Python中编写一个遗传程序,并具有多个零参数函数作为终端。我希望能够使用例如if_then_else原语将它们组合在一起,但是该原语一直试图调用我的其他int类型的终端。我想使用强类型的pset来避免这种情况,但是DEAP不允许我在添加强类型的基元时使用None类型的参数,该怎么办?

这是定义到目前为止我拥有的pset的代码

disable

1 个答案:

答案 0 :(得分:1)

您可以创建一个虚拟类来表示您的布尔类型,因为bool和int是“相同类型”。

DEAP的一位作者提出了这样的解决方案:

class Bool(object): pass
pset.addPrimitive(xxxx, [yyy, yyy], Bool)

您可以阅读discussion about that on github,也许会有所帮助。