私は整数プログラミングに比較的慣れていないため、(再び) 制約の定式化に行き詰まりました。
私の簡略化されたモデルでは、下限 LB がゼロ未満で上限 UB がゼロより大きい (連続) 変数があります。ここで、変数が取った値に応じて、変数値を他の変数に割り当てたいと思います。
私が表現したいロジックは次のとおりです。
LB > 0
UB > 0
-LB <= Variable1 <= UB
if Variable1 => 0:
Variable2 = Variable1
Variable3 = 0
else:
Variable2 = 0
Variable3 = abs(Variable1)
線形 (不) 等式を使用してこれをどのように説明できますか?
取り込みが少し遅いと思います..
前もって感謝します!
** 編集: モデリングには、Python、Pyomo、および最新の Gurobi ソルバーを使用しています。
*** 編集: バイナリ変数を使用して、次のように定式化しました。(二次であることは知っていますが、これは後で線形化できます):
LB > 0
UB > 0
-LB <= Variable1 <= UB
0 <= Variable2 <= UB
0 <= Variable3 <= LB
Variable4 = Variable2 * BinaryVariable - Variable3 * (1-BinaryVariable)
しかし、Variable2 が > 0 の場合、Variable3 が 0 であることを確認する必要があります。
何か案は?