1

状況: 最適化問題に scipy を使用しています。多くの制約が必要な場合、係数は pandas.dataframe オブジェクトにあります。サイクルを使用してこれらすべての制約を入力しようとしています。問題は次のサイクルにあり、パラメータが変更されているため、実際には拘束が残っているだけです。

問題をより明確に表現するために、例を挙げます(この例では、いくつかのパラメータが与えられています。実際の状況では、50 以上のパラメータがある可能性があります)。Step1: 私が使用したコードは次のようなものです: 制約はw1 + w2 * 2 >= 0; w1 * 3 + w2 * 5 >= 0

cons = []
d = {
        'type': 'ineq', 
        'fun': ''}
a = np.array([1,2])
d['fun'] = lambda w: a.dot(w)
cons.append(d.copy())
a = np.array([3,5])
d['fun'] = lambda w: a.dot(w)
cons.append(d.copy())
cons

ステップ 2: 次のコードを使用してコンスをテストします。[1, 1] として w を使用するだけで、コンスに格納された fun が 3 と 8 を出力すると予想されますが、実際には 8 と 8 です。

w = np.array([1,1])
for each in cons:
    fun = each['fun']
    print(fun(w))

この問題を解決する方法について誰か助けてもらえますか? または、何かがおかしいだけです。

4

1 に答える 1