ブール変数の真のiff方程式がILPで満たされている


8

仮定するとy ILPプログラムでブーリアン変数である(すなわちyZ、STと)、0<=y<=1x1x2間変数整数囲まれる0及びM。次の高レベルの制約をエンコードします。

y=1x1x2

これまでのところ私はこれを持っています:

x1x2+(M+1)y

これにより、がtrueの場合は常に、y1でなければならず、そうでないと方程式が成立しません。しかし、X 1X 2、何も制限されないYを、従って、いずれかの可能性が0または1x1>x2y1x1x2y01

制約をエンコードするために、他にどのような方程式を追加できますか?


回答:


5

これを行うには、2つの不等式を導入します

バツ1バツ2+M1y

そして

バツ1>バツ2My

前者は要件y = 1をエンコードします(あなたがいる場合ことを確認することができ、yは= 1は、その後、 M 1 - Y 項は消え;場合は、Y = 0、その後、 M 1 - yは巨大な何かになり、不平等は自動的に満たされています)。後者は要件 y = 0をエンコードしますy=1バツ1バツ2y=1M1yy=0M1y(同様の理由による)。 y=0バツ1>バツ2

うまくいけば、これにより、他の種類の影響が発生した場合にどのように処理するかについてのアイデアが得られます。基本的には、何か大きなものを掛けて、それをどこかに足す/引く。


5

定数を追加してから、次の制約を追加できます。0<<M

y+Mバツ1バツ2M1y

場合、y=1

と言った、X 1X 2

Mバツ1バツ20
バツ1バツ2

場合は、y=0

と言う X 1 > X 2(以降 0 < A < M)。

バツ1バツ2M
バツ1>バツ20<<M

3

インジケーター制約とSOS制約を調べます。他の回答で説明されているように、ターゲットの関係を直線的に定義できますが、IPソルバーによって特別な制約をより効率的に処理できます。

他の回答で説明されているように制約を直接実装する場合は、可能な限り最小のMを使用して、結果が正しくない場合は積分許容誤差を下げることを検討してください。また、厳密な不等式は避けてください。浮動小数点演算のコンテキストではあいまいです。

インジケーター制約の使用:

バツ1バツ2y=1

バツ2バツ1+1y=0

第2の制約は同等です、あなたがしたい場合は、整数のX 2X 1は単に1をドロップします。バツ2>バツ1バツ2バツ1


役立つ提案をありがとう!この特定の状況でSOS制約がどのように役立つ/役立つかについて詳しく説明できますか?
DW

インジケーター制約の例を追加しました。SOSの場合はより複雑であり、追加の変数を導入する必要があるため、それらを使用してもあまり効果が得られない可能性があります。ここで注意しなければならない唯一の側面は、他の人が提案した公式を使用して発生する可能性のある数値的な問題と、それらを緩和する方法です。インジケーター制約付きのソルバーにアクセスできる場合は、ソルバーが直接分岐するか、big-M値を動的に変更できるため、そのように試してください。
Septimus G
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.