「シンプレックス法」の版間の差分
提供: miniwiki
ja>Yusuke1109 bot |
細 (1版 をインポートしました) |
(相違点なし)
|
2018/8/19/ (日) 17:38時点における最新版
シンプレックス法(英: simplex method、単体法)は、1947年にジョージ・ダンツィーク (George B. Dantzig) が提案した、線型計画問題を解くアルゴリズムの中で最も広く使用されている方法である。線型計画法の1つ。
概要
シンプレックス法は、実行可能解 (超多面体の頂点) の1つから出発して目的関数の値をなるべく大きく (小さく) するようなところに移動させていく動作を繰り返して最適解を見つけ出す方法である。各ステップで必ず目的関数の値は改善される。
このアルゴリズムは、実用上は高速。ほとんど常に、変数の数・条件式の数の大きな方のオーダーの回数だけ反復を繰り返せば解ける。そのことは、1982年に スティーヴン・スメイル (Stephen Smale) が証明した。しかし、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。