厳密な正の制約を持つ線形計画法の実行可能性の問題


15

線形制約のシステムがあるAxb。これらの制約を満たす厳密に正のベクトルを見つけたいです。つまり、すべてのコンポーネントにはが必要です。LPソルバーを使用して、このような厳密に正のベクトルを見つける(またはが存在しないことを確認 する)にはどうすればよいですか?LPでは常に等式を許可する必要があるため、単純に別の制約システムを導入することはできませんが、目的関数を変更してLPソルバーを数回使用できます。スラック変数メソッドを使用する必要があると思いますが、その方法はわかりません。x i > 0 x i x x x x i > 0x>0xi>0xixxxxi>0

回答:


15

あなたは小さな選択の問題が回避できϵ>0もう少し野心的であることによって:検索してみてくださいxようにAxbとで最小のエントリことをx最も大きい可能です。

そのためには、新しい変数の導入

y=[xϵ]Rn+1
(場合xであっRn)及びLP-ソルバによって次のような問題を解決する
maxy[00 1]ys.t.[A 0]yband0[10010101011]y.

これは、次の問題の再定式化です

maxϵs.tAxbandxϵ1.


よくできました。これは共著者のトリックと同等で、最近の論文で使用したばかりで、私が提案したアプローチよりも間違いなく優れています。
アロンアフマディア

同意した。よくやった、先生。
ジェフオックスベリー

元の問題に対する答えが自明である場合、再定式化された問題には制限のない目的があります。例えば、制約のシステムはちょうどある場合。それは長い間、あなたのLPソルバーの戻り状態で実現可能な、最適または無制限の確認、または明示的にバインドされているようで結構ですεをx1ϵ
デビッドネメ

@DavidNehme:一つは、制約を追加することができ有界目標を取得します。yn+11
アーノルドノイマイアー

5

LP実現可能性の問題については、標準のシンプレックスを使用しません。標準の主(または双対)シンプレックスアルゴリズムは、実行可能な主(または双対)問題のセットの頂点のみを訪問します。

あなたが実際にあること解決したい問題の実現可能な集合しましょう、あなたが問題(解決した代わりと仮定Fのεを):F={x:Axb,x>0}Fε

minx0s.t.Axbxε1.

解決したい問題の最も近い近似値は、これはわずかに多すぎる点を認めます。問題は、正の象限の境界(すなわち、集合ということであるB = { XX0 IX I = 0 }の実行可能集合の境界の一部まで作ることができますF 0を私たちは思います。それらのポイントを除外するのが好きです。それを行う1つの方法は、Aronが提案したこと、つまりεを設定することです。F0B={x:x0,i:xi=0}F0ε小さい正の値に変更してから、標準のLPアルゴリズムを使用します。この戦略は優れた戦略であり、おそらくさまざまな状況で機能します。ただし、それは失敗します実行不可能です。我々はそれを知っているF 0F Fのεのすべてのためのε > 0(表記法を乱用し、それに対応する問題によって実現可能なセットを参照するため)、そしてそれはあなたが小さな正の値が選択してもいる可能性がありますεを、LPソルバーが示されますLPが実行不可能であること。FεF0FFεε>0ε

LPソルバーの場合、実行可能なポイントから開始して実行可能なままであるLPの内部ポイントアルゴリズムを使用します。これは、ポイントを除外する別の方法です。これらのアルゴリズムに実行可能なポイントを指定する必要はありません。標準のソルバーがそれを行います。アフィンスケーリング、ポテンシャル削減、バリアメソッドなどのメソッドは、実行可能なソリューションを見つける補助LPを設定し、これらのアルゴリズムの反復が実行可能な領域の内部を走査します。LPソルバーが使用する補助問題が問題の実行可能点を見つけ、その実行可能点が厳密に正である限り、実行可能領域内の1つの点のみを見つける必要があります。解決した場合のF εは小さい正の値で失敗しましたεBFεε、これらのメソッドを使用して、内の厳密に正の実行可能ポイントを見つけることができる場合があります。F0

それが唯一の頂点探求するので、しかし、単純に使用しないでください正確にあなたがやって避けたいものです。Fε


4

実現可能性の問題は、一般的な線形の問題よりも少し難しいゲームです。あなたは(方程式と制約のシステムの浮動小数点表現を使用して)約解決されている場合は、必要とする正当なものであるここで、εは、いくつかの非常に小さな数値で、それを保証するために十分に大きいですX I、実際に住んでいる+が、境界上の解決策を考慮していないことを十分に小さいです。xi>=ϵϵxi+

あなたは調整する必要があります、およびソリューションは、「の要因の中に修飾されますε」が、これは多くの状況で十分です。ϵϵ


2

aeismailによって与えられる答えは注意深く読んでください、lpを考慮してください

max(x1+x2)

st

x1+x21

x1,x20

それは、溶液有する及び0 1 と同様に他の(変性)。質問の一般性は、これらのケースも同様に扱われる必要があることを意味します。(1,0)(0,1)

目的関数を選択できるので、繰り返し変更することができます。たとえば、すべての変数のすべての係数が1に等しい状態で開始し、適切なソリューションが得られるかどうかを確認します。1つの変数がゼロの場合、係数を上げて、もう一度開始します...

私はこれが機能することを数学的に証明することはできませんが(または目的関数を修正する方法を明確に定義した手順)。これが役立つことを願っています:)


しかし、退化した解が多数ある場合、これを数値的にどのように扱いますか?ほとんどの数値ソルバーは、この問題を解決することについて警告(またはそれ以上)を投げませんか?
aeismail

いいえ、彼らはしません。遭遇した最初の最適なソリューションを返すだけです。ソリューションを生成し続ける方法は、以前に計算された最適なソリューションを除外する切断面(またはその他の制約)を追加することです。この場合、このような切断面を追加すると、最適なソリューションの無限のセットの離散近似を返すことができます。
ジェフオックスベリー

私はそれを奇妙なプログラミングの決定と見なします。報告されたソリューションの近傍で目的関数が何か奇妙なことをしていることをユーザーに伝えたくないのはなぜですか?非線形ソルバーの場合、何が起こっているのかを把握することに問題があることがわかりました。しかし、それは線形システムでわかりやすいのではないでしょうか?
aeismail

実際に問題を構築して縮退を検出する方法について考える必要がありますが、通常、ユーザーは最適なソリューションを求めているため、LPの最も重要な情報は、ソリューションが最適で実行可能な(ただし最適ではない)場合に返すことです、実行不可能、または無制限。(実際、これらのステータスはCPLEXのようなソルバーが返すものです。)縮退は主に理論上の問題です。数値のコンテキストで議論される唯一の理由は、アルゴリズムの設計または実際のいずれかです。これは、一般に縮退によりソルバーが遅くなることに注意してください。
ジェフオックスベリー
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.