我正在尝试将个人(gp 程序)转换为 python 代码。但是,当我调用 evaluate() 时出现错误,我不确定如何修复。我正在解决 symbolic regression问题,这些是我的原语。
pset = gp.PrimitiveSet("MAIN", 1)
pset.addPrimitive(operator.add, 2)
pset.addPrimitive(operator.sub, 2)
pset.addPrimitive(operator.mul, 2)
pset.addPrimitive(safeDiv, 2)
pset.addEphemeralConstant(lambda: random.randint(-1,1))
pset.renameArguments(ARG0='x')
我得到的错误是:
NameError: name 'x' is not defined
请您参考如下方法:
在处理有争议的个人时,评估他们的正确方法是通过 lambdify因为 evaluate 创建了一个没有参数的包裹在函数周围的个体。遗憾的是,您无法将个人转换为 Python 代码。例如,个体以 [mul,x,mul,add,1,x] 的形式表示,然后映射到工具箱中设置的原始函数,这样做是因为它比创建 python 代码或 AST 更快并执行它。
对于 future 与 DEAP 相关的问题,我建议按照 CmdNtrf 的建议进行操作,即加入 DEAP 谷歌群组,在那里您可以提出您的具体问题。
希望对 future 的居民有所帮助。
