web-dev-qa-db-ja.com

Scipy.optimize不等式制約-不等式のどちら側が考慮されますか?

私はscipy.optimizeモジュールを使用して、出力を最小化する最適な入力の重みを見つけています。私が見た例から、片側方程式で制約を定義します。次に、タイプ「不平等」の変数を作成します。私の質問は、制約内の変数の合計が1より小さいか1より大きい必要があるかどうかを最適化パッケージがどのように知るかです。

...

def constraint1(x):
    return x[0]+x[1]+x[2]+x[3]-1

....

con1 = {'type': 'ineq', 'fun': constraint1}

私の例で使用している完全なソリューションへのリンク: http://apmonitor.com/che263/index.php/Main/PythonOptimization

ありがとうございました。

12
trystuff

https://docs.scipy.org/doc/scipy-0.18.1/reference/tutorial/optimize.html を参照し、多変量スカラー関数の制約付き最小化(最小化)までスクロールすると、あなたはそれを見つけることができます

このアルゴリズムでは、次の形式の制約付き最小化問題を処理できます。

enter image description here

ここで、不等式の形式はC_j(x) >= 0です。

したがって、制約を次のように定義すると

def constraint1(x):
    return x[0]+x[1]+x[2]+x[3]-1

制約のタイプを次のように指定します

con1 = {'type': 'ineq', 'fun': constraint1}

制約が標準形式x[0]+x[1]+x[2]+x[3]-1>=0、つまりx[0]+x[1]+x[2]+x[3]>=1であると自動的に想定します

16
Sandipan Dey