現在、Python の PuLP ライブラリでモデル化されている混合整数計画法 (MIP) の問題があります。ただし、私の問題は非常に一般的なものであり、ここでは構文は役割を果たしません。
次のように機能する制約をモデルに追加したいと思います。
if b=1 then x=y
変数は、値 0 または 1をb
取るバイナリ変数です。現在の在庫レベルを表す変数です。連続変数として、整数変数として。x
y
x
y
制約は次の形式でのみモデル化できることを知っています。
a*x+c <= y # a, c are constants, x, y variables
上記のif b then x equals y
制約をモデル化する方法がいくつかあることを願っています。
これまでの私のアプローチは次のとおりです。
b*y <= x
y >= x*b # works in theory, but multiplication of 2 variables is not allowed
2 つのバイナリ変数 x と y の場合、次のことが当てはまります。
M*y > x # represents: if x then y (M is a sufficient large constant)
解決策には、大きな M 定数、おそらくさらにヘルパー変数が含まれていると思います。
ちょっとした背景: 在庫レベルが連続している在庫問題をモデル化したいと考えています。ただし、順序の決定は整数でのみ可能であるべきです。したがって、在庫レベルを浮動小数点数でモデル化する必要があります。順序の時点 (b==1) ただし、整数です。
これが直接コーディングに関連するというよりもむしろ理論的なものであっても、誰かがここで助けてくれることを願っています. 役立つ可能性のあるさらなるリソースへのヒントも高く評価されています。