シンプレックス法
表示
シンプレックス法(英語: simplex method、単体法)は、1947年にジョージ・ダンツィークが提案した、線型計画問題を解くアルゴリズムの中で最も広く使用されている方法である。線型計画法の1つ。
シンプレックス法は、実行可能解 (超多面体の頂点) の1つから出発して目的関数の値をなるべく大きく (小さく) するようなところに移動させていく動作を繰り返して最適解を見つけ出す方法である。各ステップで必ず目的関数の値は改善される。
このアルゴリズムは、実用上は高速であり、変数の数・条件式の数の大きな方のオーダーの回数だけ反復を繰り返せばほとんど常に最適解に達する。このことは、1982年に スティーヴン・スメイル (Stephen Smale) が証明した。シンプレックス法は、用いるピボット規則により性能が左右される。有限回のピヴォットで終了することが保証されている規則として、Blandの提案した最小添字規則が知られている。Dantzigの提案したピボット規則は問題の規模にたいして指数時間かかる問題例があることが知られている。現在のところ、線型計画問題を多項式時間で解くピボット規則の存在性は未解決問題である。
単体法という名前は、Dantzig が提案した特殊な図解法においては、アルゴリズムの進行に従って単体が下に落ちていくように見えることに由来する。
アルゴリズム
[編集]この節の加筆が望まれています。 |
一般的な流れは以下のとおりである。
- 線型計画問題を制限標準型に変形する。
- スラック変数を加え、標準型に変形する。制約条件のうち、不等式を含む物がなくなり、全て等式となる。
- 人工変数を加え、制限標準型に変形する。等式化された問題の目的関数を z とおく。z を最大化 (最小化) する線型計画問題にする。
- ここまで行った作業を基にシンプレックス表 (Simplex Tableau、線型計画問題の係数を表にまとめたもの) を作成する。
- 式の数だけ基底変数を定める。目的関数zは必ず基底変数に選ばなければならない。
- 初期の基底変数から得られた連立方程式の解が最適かどうかを調べる。最適とみなすことができた場合は終了。終了しなかった場合は以下の作業をおこなう。
- 基底変数と非基底変数の組合せを変更する。
参考文献
[編集]- William H. Press(著)、William T. Vetterling(著)、Saul A. Teukolsky(著)、Brian P. Flannery(著)、丹慶 勝市(翻訳)、佐藤 俊郎(翻訳)、奥村 晴彦(翻訳)『ニューメリカルレシピ・イン・シー 日本語版―C言語による数値計算のレシピ』技術評論社、1993年6月1日。ISBN 978-4874085608。
- 水野 眞治, 『シンプレックス法の巡回とその回避』
- 松井 知己, 『Bland の最小添字規則の有限性 -単体法の非巡回ピヴォット規則- 』