私は最適化の目的でパルプ(https://pythonhosted.org/PuLP/)を使用しています。 Bは0または1であり、M十分に大きい値である最小絶対値を持つPythonパルプオプティマイザ
x + M * B >= MIN
-x + M * (1 - B) >= MIN
:私はちょうど2つの制約を作成して、私はabs(x) > MIN
のような制約を使用する必要があると私はここで解決策http://lpsolve.sourceforge.net/5.5/absolute.htmを見つけました。問題は、M〜10000を使用するとすばらしいことですが、INT_MAX_VALUEまたは〜10000000000を使用すると機能しません。 誰かにこのような問題がありますか?
'B'はブール変数です。なぜ、' 10000'や '100000000000'などの値を使用しますか? – Holt
'M'は可能な限り小さく選択する必要があります(そうしないと、気づいたように深刻な数値的な問題に陥ります)。あなたの場合、 'M 'を' x'の境界、すなわち| x |とみなすことができます。 <= Mである。実用的な場合には、| x |の良い束縛をよく知ることがある。 –