-1

翼型の重みの最適値を取得するためにxfoilを実行するために実行されている次のコードがあります。

def four_dim_opt(x0, weight_limits, cl, file_path, xfoil_path):
opt_out = fmin_l_bfgs_b(run_xfoil_wcl, x0, args = (cl, file_path, xfoil_path), bounds =    weight_limits, epsilon = 0.01, approx_grad = True)
return opt_out

ここで、run_xfoil_wclは、抗力値(float)の係数を返す関数です。

私が取得し続けるエラーは次のとおりです。

Traceback (most recent call last):
File "<pyshell#13>", line 1, in <module>
four_dim_opt(x0, weight_limits, 1.2, file_path, xfoil_path)
File "H:/appliedlab4 - Copy(2).py", line 157, in four_dim_opt
opt_out = fmin_l_bfgs_b(run_xfoil_wcl, x0, args = (cl, file_path, xfoil_path), bounds =     weight_limits, epsilon = 0.01, approx_grad = True)
File "C:\Python27\lib\site-packages\scipy\optimize\lbfgsb.py", line 166, in fmin_l_bfgs_b
l,u = bounds[i]
ValueError: too many values to unpack
4

2 に答える 2

1

four_dim_opt に何を渡していますweight_limitsか? weight_limits の値が bounds に渡され、エラー メッセージの行でアクセスされます。

l,u = bounds[i]

これは、weight_limits がリストまたはタプルであることが期待され、リスト内の各項目もリストまたはタプル (正確に 2 つの値を保持する) である必要があることを意味します。

于 2013-03-02T04:06:18.723 に答える
1

scipy.optimize.fmin_l_bfgs_bへのweight_limits引数がエラーの原因であり、次のいずれか、または 2 つの要素を含むリストである必要があります。None

weight_limits - x の各要素の (最小、最大) ペアで、そのパラメーターの境界を定義します。その方向に境界がない場合は、min または max のいずれかに None を使用します。

于 2013-03-02T04:02:24.110 に答える