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