1

每当我尝试使用 DEAP 的 GP 部分评估个人时,我目前都遇到了问题。

我收到以下错误:

Traceback (most recent call last):
  File "ImageGP.py", line 297, in <module>
    pop, logs = algorithms.eaSimple(pop, toolbox, 0.9, 0.1, 60, stats=mstats, halloffame=hof, verbose=True)
  File "/Library/Frameworks/Python.framework/Versions/3.5/lib/python3.5/site-packages/deap/algorithms.py", line 148, in eaSimple
    for ind, fit in zip(invalid_ind, fitnesses):
  File "ImageGP.py", line 229, in evalFunc
    func = toolbox.compile(expr=individual)
  File "/Library/Frameworks/Python.framework/Versions/3.5/lib/python3.5/site-packages/deap/gp.py", line 451, in compile
    return eval(code, pset.context, {})
  File "<string>", line 1
    lambda oValue,oAvg13,oAvg17,oAvg21,sobelVal(v),sobelVal(h),edgeVal,blotchVal: [[[0, 75, 82.2857142857, 83.0, 82.9090909091, 4, 12, 4, 180], ... Proceed to print out all of my data ...  [0, 147, 151.244897959, 150.728395062, 150.73553719, 248, 244, 5, 210]]]
                                               ^
SyntaxError: invalid syntax

如果有人对可能导致此问题的原因有任何想法,那么我将非常感谢一些建议。我当前的评估函数如下所示:

def evalFunc(individual, data, points):
    func = toolbox.compile(expr=individual)
    total = 1.0

    for point in points:
        tmp = [float(x) for x in data[point[1]][point[0]][1:9]]
        total += int((0 if (func(*tmp)) < 0 else 1) == points[2])

    print ("Fitness: " + str(total))
    return total,

其中数据包含正在使用的数据(错误中列出的 8 个变量的值)以及指定从中获取这 8 个值的 x 和 y 坐标的点。谢谢你的建议!

4

0 回答 0