ゼロ1整数線形計画法(ILP)でブール論理演算を表現する


58

ブール値を表すための変数を備えた整数線形プログラム(ILP)があります。さんは整数であると保持するために制限されている0または1()。xixi0xi1

線形制約を使用して、これらの0/1値の変数に対するブール演算を表現したいと思います。これどうやってするの?

具体的には、(ブールAND)、(ブールOR)、および(ブールNOT)に設定します。ブール値として0/1の明白な解釈を使用しています:0 = false、1 = true。が必要に応じて関連付けられるようにILP制約を記述する方法を教えてください。y1=x1x2y2=x1x2y3=¬x1yixi

(これは、CircuitSATからILPへの削減を要求する、またはSATをILPとして表現する方法を要求するものと見なすことができますが、ここでは、上記の論理演算をエンコードする明示的な方法を確認します。)

回答:


66

論理AND:線形制約を使用して、、、、どこ整数になるように制約されます。これにより、目的の関係が強制されます。(ちょうど線形不等式でそれを行うことができることはかなりきちんとしている?)y1x1+x21y1x1y1x20y11y1

論理OR:線形制約を使用し、、、、どこ整数になるように制約されます。y2x1+x2y2x1y2x20y21y2

論理否定:使用します。y3=1x1

論理的な意味:(つまり、)を表現するために、論理ORの構成を適合させることができます。具体的には、線形制約使用、、、、整数であるように制約されます。y4=(x1x2)y4=¬x1x2y41x1+x2y41x1y4x20y41y4

強制的な論理的含意:を保持する必要があることを表すには、単純に線形制約使用します(とが既にブール値に制約されていると仮定します)。x1x2x1x2x1x2

XOR:(と排他的論理和)を表すには、線形不等式、、、、、整数であるように制約されます。y5=x1x2x1x2y5x1+x2y5x1x2y5x2x1y52x1x20y51y5


また、ボーナスとして、ゼロから1(ブール)変数と整数変数の混合を含む問題を定式化するときに役立つもう1つのテクニックを次に示します。

ブール(バージョン1)にキャスト:あなたは、整数の変数があるとし、あなたが定義したいなるようにの場合およびの場合。であることがさらにわかっている場合、線形不等式、、ます。ただし、これは上限と下限がわかっている場合にのみ機能します。または、を知っている場合 定数に対して(つまり、)、ここで説明する方法を使用できますxyy=1x0y=0x=00xU0y1yxxUyx|x|UUxUU。これは、上限がわかっている場合にのみ適用されます。|x|

ブール型へのキャスト(バージョン2):同じ目標を考えてみましょうが、上限はわかりません。ただし、あることがわかっていると仮定し。この制約を線形システムで表現する方法を次に示します。最初に、新しい整数変数導入します。不等式、、を追加します。次に、を最小化するように目的関数を選択します。これは、目的関数がまだない場合にのみ機能します。あなたが持っている場合負でない整数の変数は、あなたは、ブール値にそれらのすべてをキャストしたいので、の場合xx0t0y1yxt=xytnx1,,xnyi=1xi1 and if場合、変数を不等式、、で、目的関数を定義できますを最小化します。繰り返しますが、これは目的関数を定義するのに他に必要なことはありません(変数の一部の関数を最小化/最大化しようとせずに、結果のILPの実行可能性を確認することを計画していた場合)。yi=0xi=0nt1,,tn0yi1yixiti=xiyit1++tn


優れた実践上の問題と実際の例については、整数線形プログラムの定式化:不正なギャラリーをお勧めします


どの線形計画法ソルバーがこれを解決できますか?制約の片側が* .lpまたは* .mps-formatであるため、変数ではなく固定整数である必要があります。
boxi

4
@boxi、*。lpまたは* .mps形式については何も知りませんが、すべての整数線形計画法ソルバーはこれを解決できるはずです。ようなものがある場合、これはと同等であり、希望する形式であることに注意してください。xyyx0
DW

-iもう一度チェックしました。lp_solveでは解決できますが、たとえばqsoptでは解決できません。理由はわかりません。しかし感謝<3
boxi

@ boxi、QSoptオンラインアプレットGUIをチェックしただけで、をに変更すると、これらの種類の制約を処理できるので、何が起こっているのかわかりません。(* .lp形式を使用しました。)ILPソルバーがこれらのシステムを処理できなかった場合、私は驚くでしょう。QSoptについてさらに質問がある場合は、おそらくQSoptサポートフォーラムに問い合わせてください。xyxy0
DW

1
@Pramod、良いキャッチ!そのエラーを見つけてくれてありがとう。あなたは絶対に正しいです。そのケースをモデル化する方法について新しい質問をしました。その答えが得られたら、この答えを更新します。
DW

19

論理AND関係は、3つの制約ではなく1つの範囲制約でモデル化できます(他のソリューションのように)。したがって、3つの制約代わりに、 単一の範囲制約を使用して記述できます。 同様に、論理ORの場合:

y1x1+x21,y1x1,y1x2,
0x1+x22y11.
02y1x1x21.

NOTでは、そのような改善は利用できません。

一般に、( -way AND)の場合、制約は 同様に、OR: y=x1x2xnn

0xinyn1.
0nyxin1.

非常に類似したアプローチがこのペーパーにあります:ncbi.nlm.nih.gov/pmc/articles/PMC1865583
Abdelmonem Mahmoud Amer

3

XOR y =x1⊕x2(xとyはバイナリ0、1)の短いソリューションを見つけました

1行のみ:x1 + x2-2 * z = y(zは任意の整数)


ILPで平等を表現するには、2つの不等式が必要です。さらに、解、さらに2つの不等式です。したがって、この答えには4つの不等式があり、DWの答えの6つの不等式と比較して追加の変数があります。x1=1,x2=0,z=200,y=1990y1
JiK

ILPで等式を表現するために必要な式は1つだけです。これはLP理論とGurobiやCPLEXなどのソフトウェアの両方に当てはまります。@jIkは、私はあなたが「表現する『という意味を推測』 2つの不等式を必要としている。」b
whitegreen
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.