2013-11-28 41 views
1

我试图将个人(一个GP程序)转换成Python代码。但是,当我打电话评估()我收到一个错误,我不知道如何解决。我正在解决symbolic regression问题,这些是我的原始人。Python DEAP个人到AST

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 
+1

作为DEAP gp模块的主要开发者,我建议您将您的问题移到我们的邮件列表https://groups.google.com/forum/#!forum/deap-users,我们将能够帮助你解决问题。 – CmdNtrf

+0

会不会,谢谢! –

回答

1

当有一个参数来评估他们正确的方法是通过lambdify因为评估个人打交道创建一个围绕功能包裹的个体没有争论。可悲的是你不能将个人转换成Python代码。例如,个体以[mul,x,mul,add,1,x]的形式表示,然后映射到工具箱中设置的基本函数,这是因为创建python代码或AST并执行它。

对于未来的DEAP相关问题,我会建议做什么CmdNtrf建议哪些是加入DEAP谷歌组,你可以问你的具体问题。

希望对未来的居民有帮助。