最終結果をさらに洗練するために、最適化問題を繰り返し実行したいと考えています。scipy linprogを使用した最適化の固定小数点の境界
本質的に、目的変数(不等式と等式制約を受ける)、のセットの最大値を最小化することで、その後は最大、を除くセットの最大値を最小化し、次いでが最大値を最小化します二大数字のように...
私が考えているアルゴリズムを除く集合は次のとおりです。
- 実行一連の数値の最大値を最小限に抑えるため、すべての変数を無制限にしてを返します。
- 最適化の問題が発生していて、解決できたとすると、
bounds=[..., (opt_val, opt_val), ...]
を設定して最大値をopt_val
に固定します。他のすべての変数は、境界が(-numpy.inf, numpy.inf)
です。 b_ub
の係数をnumpy.inf
に変更して、その変数に対応する不等号制約を無効にします。- 修正された境界と不等ベクトルを使用してシミュレーションを再実行します。
これはエラーなしで実行することができますが、scipyのダウンロード/ numpyのは、明示的に、私は変数に置く境界を無視するように思える - 私は、対応するopt_val
ではありません、私は「固定」している変数の結果を取得します。
変数を単一の浮動小数点数に制限するscipyハンドル境界を処理できますか? これは私の問題を解決する最善の方法ですか?
私が開発したコードは実際にはかなり広範囲なので、ここでは投稿していないのですが、もちろんコードベースのソリューションは期待していません。私がここで探しているのは、scipyが単一の浮動小数点に限定された境界間隔を処理できるかどうか、そしてより高いレベルで正しいアプローチをしているかどうかについてyes/noの答えです。
https://docs.scipy.org/doc/scipy-0.15.1/reference/generated/scipy.optimize.linprog.htmlのドキュメントでは、固定小数点の境界を指定できるかどうかは明示的に示されていません。
もっと良いLPソルバーを試してみてください。 Scipy.optimize.linprogはそれほど堅牢ではありません。 –
verfiy @ ErwinKalvelagenのコメントのソースをお探しの方: http://stackoverflow.com/questions/43106053/why-does-scipy-optimize-linprog-return-a-solution-that-does-not-satisfy-制約/ 43106433 – Charlie