にパラメータ化された機能の動的なリストを作成し、私は私の問題が非常に大きいので、それらを明示的に書くの簡単なオプションが機能しませんは<a href="http://docs.scipy.org/doc/scipy/reference/generated/scipy.optimize.fmin_slsqp.html#scipy.optimize.fmin_slsqp" rel="nofollow noreferrer">fmin_slsqp</a>を使ってPython
ieqcons : list, optional A list of functions of length n such that ieqcons[j](x,*args) >= 0.0 in a successfully optimized problem.
を提供する必要があります。
def f1(x,arg1,arg2):
...
def f2(x,arg1,arg2):
...
...
list_func = [f1,f2,...]
dynamic and anonymous functions in Pythonに対処し、答えのほとんどは完全に不要と思われると、関数に引数を渡すことが複雑に文字列としてコードを解析して回るこの質問があります。制約リストの性質は、単一のパラメータ(インデックスなど)が関数を一意に識別できるが、リスト内のすべての関数が同じ引数を受け取り、渡された引数に基づいて区別することが不可能であるということである。
この形式の構造は、私は関数定義でi
が最終にする解決策を見つけることができませんしかしf1
とf2
戻りi=2
に同じ関数を呼び出す
def f(x,arg1,arg2,i):
# return value based on i
# e.g. # for constrain of form x[i]>=arg1[i] the funct is:
# return x[i]-arg1[i]
i = 1
f1 = lambda x,arg1,arg2 : f(x,arg1,arg2,i)
i = 2
f2 = lambda x,arg1,arg2 : f(x,arg1,arg2,i)
十分かつ無痛だろう特定のラムダ関数への可視性を制限することができます。発言として 、
i
は、最終的な解決策が
list_f =[]
for i in range(0,num_cons):
list_f.append(lambda x,arg1,arg2 : f(x,arg1,arg2,i))
のようになりますので、私はこの問題解決することができますどのように変数のままに持っているか、私の目標を達成するための、より単純で巧妙な方法は何ですか?私が理解から
ありがとうございます...それは期待どおりに機能しました –