Skip to main content
 首页 » 编程设计

Python DEAP 个体到 AST

2025年05月04日6leader

我正在尝试将个人(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 的居民有所帮助。