内点法を使用して線形計画法の正確なコーナーソリューションを見つける


11

シンプレックスアルゴリズムは、ポリトープの角を貪欲に歩いて、線形計画問題の最適解を見つけます。その結果、答えは常にポリトープの隅になります。内点法はポリトープの内部を歩きます。その結果、ポリトープの平面全体が最適である場合(目的関数が平面に正確に平行である場合)、この平面の中央で解を得ることができます。

代わりにポリトープのコーナーを見つけたいとしましょう。たとえば、線形プログラミングに削減することで最大マッチングを行いたい場合、「マッチングにはエッジXYの0.34%とエッジABの0.89%が含まれ、...」という回答は必要ありません。私たちは0と1で答えを得たいと思っています(すべてのコーナーが0と1で構成されているので、シンプレックスは私たちに与えるでしょう)。多項式時間で正確なコーナーの解を見つけることを保証する内点法でこれを行う方法はありますか?(たとえば、コーナーを優先するように目的関数を変更できます)


1
@JD:なぜこれを答えにしないのですか?
ラファエル

回答:


6

あなたは論文を読みたいかもしれません:

Sanjay Mehrotra、内点法を使用した頂点解の検索、線形代数とそのアプリケーション、第152巻、1991年7月1日、ページ233-253、ISSN 0024-3795、10.1016 / 0024-3795(91)90277-4。sciencedirect記事リンク


4

質問は一般的に理にかなっていますが、多くのアルゴリズム(最大カーディナリティ2部マッチングの最大フロー、非2部マッチングのエドモンズアルゴリズム、最大重み2部マッチングのハンガリーアルゴリズム)があるため、例として最大マッチングを選択するのは奇妙ですそれはすべて問題の整数頂点解を与えます。


それは実用的というよりはむしろ理論的な興味でした。それでも、多くの場合、内点法はシンプレックスよりも高速であるため、これが実際的な問題である場合、問題が発生する可能性があります;)
Jules

3

詳細が不足しているため、これは単なる長いコメントです。

Karmarkarの多項式時間アルゴリズムは、エッジ付近のみを移動します。最後に、精製スキームschemeを使用して最適な適切な基本ソリューション(コーナーなど)を見つけます。これまたは同様の手法を使用して、平面からコーナーに移動できます。


Kar Karmarkarのオリジナルの論文では理解できません。私のリファレンスは、ドイツ語と英語のテキストが並んでいるハマチャーとクラムロスの「Lineare Optimierung und Netzwerkoptimierung」(英語:線形およびネットワークの最適化)です。


1

はい、単純な方法があり、それをC ++に実装して、内点法の速度とシンプレックス法の精度を組み合わせました(基底行列の逆の反復改良を使用して、10 ^ 15で1パーツの精度を達成できます) 1000以上の変数と制約を持つ密な制約行列でより良いです)。

キーは、使用するシンプレックスメソッドにあります。シンプレックス法には基底をリファクタリングするメカニズムがあり(たとえば、累積丸め誤差により必要になった後)、このリファクタリング手法は、基本変数のすべての必要なリストを含む基底の基底逆行列を単純に再作成するとします。さらに、目的の基底を完全に再作成できない場合でも、シンプレックスアルゴリズムはターゲット基底の95%を含む基底から続行できると仮定すると、答えは非常に簡単です。

あなたがしなければならないのは、内点法から解を取り、補完的なスラックネスによって一次解の値がゼロであることが暗黙的に示されている変数を排除し、bのシンプレックス問題の基底サイズを与え、内部でb変数を取ることです。最大値(またはそれがb未満の場合はゼロ以外の値と同じ数)の点解と、それらのb変数を含むようにシンプレックス基底をリファクタリングします。次に、解決するまでシンプレックス法を続けます。仕上げの近くでシンプレックス問題を開始しているため、これは通常非常に高速です。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.