← 戻る ライブラリ › 応用数学と計算数学 › 最適化理論 応用数学と計算数学
線形計画法 線形の制約条件のもとで線形の目的関数を最適化し、シンプレックス法によって効率的に解く手法。
直観 限られた資源から最大の利益を絞り出す 共有する機械稼働時間と原材料を使って2種類の製品を作る小さな工場を想像してほしい。各製品は単位あたり異なる利益をもたらし、機械時間、原材料、保管スペースといった各制約は生産できる量を制限する。線形計画法が問うのは、どの制約も破らずに総利益を最大化するには各製品をどれだけ作るべきかということである。利益関数とすべての制約が直線(高次元では平らな超平面)であるため、実行可能な生産計画の集合は凸多面体を形成し、最良の計画は常にその頂点の1つに位置する。
多面体を頂点ごとに分解して見せる:線形計画問題では、実行可能領域はまさにこのような多面体であり、線形計画法の基本定理は最適解がこれらの頂点のいずれかに位置することを保証する。 中高 標準形 定義: 線形計画問題の標準形
標準形の線形計画問題は、線形の目的関数c T x c^{\mathsf{T}}x c T x を最大化するために決定変数ベクトルx x x を選び、線形不等式制約A x ≤ b Ax\le b A x ≤ b と非負条件x ≥ 0 x\ge 0 x ≥ 0 に従う。ここでc c c は単位あたりの利益のベクトル、A A A は資源使用係数の行列、b b b は資源制限のベクトルである。
max x c T x subject to A x ≤ b , x ≥ 0 \max_{x} \; c^{\mathsf{T}} x \quad \text{subject to} \quad Ax \le b, \; x \ge 0 x max c T x subject to A x ≤ b , x ≥ 0 A x ≤ b Ax\le b A x ≤ b の各行は1つの限られた資源を表す:左辺は生産計画x x x がその資源をどれだけ消費するかであり、右辺b b b は利用可能な量である。各行にスラック変数s ≥ 0 s\ge 0 s ≥ 0 を加えることで、すべての不等式は等式A x + s = b Ax+s=b A x + s = b に変わり、これがシンプレックス法が実際に扱う形である。
A x + s = b , s ≥ 0 Ax + s = b, \qquad s \ge 0 A x + s = b , s ≥ 0 線形計画問題を解く手法の比較 手法 探索の仕方 何変数まで拡張できるか 最悪計算量 図解法 実行可能多角形を描き、目的関数の直線をその上でスライドさせる 2変数のみ(3D図なら3変数) 適用不可(視覚的手法) シンプレックス法 頂点から隣接する頂点へ移動し、常に目的関数を改善する 実務では数百から数千変数 理論上は指数時間だが実務では高速 内点法 多面体の内部を通って最適点へ移動する 非常に大規模な問題(数百万変数) 多項式時間
大学 基本定理とシンプレックス法 実行可能領域P = { x : A x ≤ b , x ≥ 0 } P=\{x : Ax\le b, x\ge 0\} P = { x : A x ≤ b , x ≥ 0 } が空でなく有界であるとする。線形計画問題max x ∈ P c T x \max_{x\in P} c^{\mathsf{T}}x max x ∈ P c T x が最適値を持つならば、その最適値はP P P のある頂点(端点)で達成される。
なぜ正しいのか? 目的関数は線形であるため、そのレベル集合は互いに平行な超平面である。そのような超平面を凸多面体上でスライドさせるとき、領域を離れる直前に触れる最後の点は常に頂点であり、面の内部の点になることはない。なぜなら、内部の点は常に目的関数を改善する方向にさらに押し進めることができるからである。
証明 P P P は有限個の線形不等式で定義された有界な多面体であるから、有限個の頂点v 1 , … , v k v_1,\ldots,v_k v 1 , … , v k を持ち、多面体に関する古典的な事実(ミンコフスキーの定理)により、P P P のすべての点はこれらの頂点の凸結合として表される:x = ∑ i = 1 k λ i v i x=\sum_{i=1}^{k}\lambda_i v_i x = ∑ i = 1 k λ i v i 、ここでλ i ≥ 0 \lambda_i\ge 0 λ i ≥ 0 かつ∑ i λ i = 1 \sum_i \lambda_i=1 ∑ i λ i = 1 である。
目的関数c T x c^{\mathsf{T}}x c T x は線形であるから、そのような凸結合上でこれを評価するとc T x = ∑ i λ i ( c T v i ) ≤ ( max i c T v i ) ∑ i λ i = max i c T v i c^{\mathsf{T}}x=\sum_i \lambda_i\left(c^{\mathsf{T}}v_i\right)\le \left(\max_i c^{\mathsf{T}}v_i\right)\sum_i\lambda_i=\max_i c^{\mathsf{T}}v_i c T x = ∑ i λ i ( c T v i ) ≤ ( max i c T v i ) ∑ i λ i = max i c T v i が得られる。これは各λ i ≥ 0 \lambda_i\ge 0 λ i ≥ 0 であり、それらの和が1 1 1 になるからである。
これは、すべての実行可能なx x x の目的関数値が最良の頂点値max i c T v i \max_i c^{\mathsf{T}}v_i max i c T v i を超えないことを示す。しかし、その最良の頂点、v i ∗ v_{i^*} v i ∗ と呼ぶことにすると、それ自体がP P P の実行可能点であるから、実際にこの上界を達成する:c T v i ∗ = max x ∈ P c T x c^{\mathsf{T}}v_{i^*}=\max_{x\in P} c^{\mathsf{T}}x c T v i ∗ = max x ∈ P c T x 。したがって、線形計画問題の最適値は頂点v i ∗ v_{i^*} v i ∗ で達成され、主張が証明される。
基本定理により、最適値の探索をP P P の有限個の頂点に限定できるが、制約が多い場合にすべての頂点を直接調べるのは遅すぎる。代わりにシンプレックス法は、ある頂点から出発し、目的関数を厳密に増加させる辺に沿って隣接する頂点へと繰り返し移動し、どの隣接頂点もそれより良くないときにのみ停止する——その時点で、すべての被約費用は非負であり、現在の頂点が最適であることが証明される。
主問題max { c T x : A x ≤ b , x ≥ 0 } \max\{c^{\mathsf{T}}x : Ax\le b, x\ge 0\} max { c T x : A x ≤ b , x ≥ 0 } に対して、双対問題min { b T y : A T y ≥ c , y ≥ 0 } \min\{b^{\mathsf{T}}y : A^{\mathsf{T}}y\ge c, y\ge 0\} min { b T y : A T y ≥ c , y ≥ 0 } を定義する。このとき(弱双対性)主問題の実行可能なx x x と双対問題の実行可能なy y y のすべてについてc T x ≤ b T y c^{\mathsf{T}}x\le b^{\mathsf{T}}y c T x ≤ b T y が成り立ち、(強双対性)主問題が最適解x ∗ x^{*} x ∗ を持つならば、双対問題は最適解y ∗ y^{*} y ∗ を持ちc T x ∗ = b T y ∗ c^{\mathsf{T}}x^{*}=b^{\mathsf{T}}y^{*} c T x ∗ = b T y ∗ が成り立つ。
なぜ正しいのか? 双対性は、主問題の最大化と双対問題の最小化が同じ数値に対する2つの見方であることを述べている:双対変数y y y は資源の価格として働き、弱双対性は、どんな有効な価格付けのもとでも、実行可能などの生産計画もそれが使う資源の価値以上には決して稼げないことを述べ、強双対性は、最適点において最良の生産計画と最も安い有効な価格付けがちょうど一致することを述べる。
証明 (弱双対性。)x x x を主問題の任意の実行可能点(A x ≤ b Ax\le b A x ≤ b 、x ≥ 0 x\ge 0 x ≥ 0 )とし、y y y を双対問題の任意の実行可能点(A T y ≥ c A^{\mathsf{T}}y\ge c A T y ≥ c 、y ≥ 0 y\ge 0 y ≥ 0 )とする。x ≥ 0 x\ge 0 x ≥ 0 とA T y ≥ c A^{\mathsf{T}}y\ge c A T y ≥ c より、この不等式に非負ベクトルx x x を掛けても向きは変わらない:c T x ≤ ( A T y ) T x = y T A x c^{\mathsf{T}}x\le \left(A^{\mathsf{T}}y\right)^{\mathsf{T}}x=y^{\mathsf{T}}Ax c T x ≤ ( A T y ) T x = y T A x 。y ≥ 0 y\ge 0 y ≥ 0 とA x ≤ b Ax\le b A x ≤ b より、同様の議論からy T A x ≤ y T b = b T y y^{\mathsf{T}}Ax\le y^{\mathsf{T}}b=b^{\mathsf{T}}y y T A x ≤ y T b = b T y が得られる。この2つの不等式をつなげると、任意の実行可能な組についてc T x ≤ b T y c^{\mathsf{T}}x\le b^{\mathsf{T}}y c T x ≤ b T y が成り立ち、これが弱双対性である。
(強双対性。)主問題に対してシンプレックス法を実行し、最適基底行列B B B を持つ最適な基底実行可能解x ∗ x^{*} x ∗ で終了するとする。このときx B ∗ = B − 1 b x^{*}_B=B^{-1}b x B ∗ = B − 1 b が成り立ち、非基底変数の被約費用はすべて非負である——この終了条件はy ∗ T = c B T B − 1 y^{*\mathsf{T}}=c_B^{\mathsf{T}}B^{-1} y ∗ T = c B T B − 1 を定義することと同値であり、これがA T y ∗ ≥ c A^{\mathsf{T}}y^{*}\ge c A T y ∗ ≥ c とy ∗ ≥ 0 y^{*}\ge 0 y ∗ ≥ 0 を満たすこと、すなわちy ∗ y^{*} y ∗ が双対実行可能であることを確認できる。
代入すると、主問題の最適値はc T x ∗ = c B T x B ∗ = c B T B − 1 b = y ∗ T b = b T y ∗ c^{\mathsf{T}}x^{*}=c_B^{\mathsf{T}}x^{*}_B=c_B^{\mathsf{T}}B^{-1}b=y^{*\mathsf{T}}b=b^{\mathsf{T}}y^{*} c T x ∗ = c B T x B ∗ = c B T B − 1 b = y ∗ T b = b T y ∗ となる。弱双対性(常にc T x ∗ ≤ b T y ∗ c^{\mathsf{T}}x^{*}\le b^{\mathsf{T}}y^{*} c T x ∗ ≤ b T y ∗ が成り立つ)と組み合わせると、ここでの等号はy ∗ y^{*} y ∗ もまた双対最適解であることを強制し、したがってc T x ∗ = b T y ∗ c^{\mathsf{T}}x^{*}=b^{\mathsf{T}}y^{*} c T x ∗ = b T y ∗ となり、強双対性が証明される。
大学 実世界での応用と具体例 線形計画法は、さまざまな業界の意思決定ソフトウェアの基盤となっている:航空会社は数百万の変数を持つ乗務員スケジューリングや機材割り当てのLPを解き、製油所は最小コストで製品規格を満たすよう原油を配合し、通信会社はスループットを最大化するようネットワークトラフィックを経路制御し、ポートフォリオマネージャーはリスク制限のもとで資産に資本を配分する——これらはすべて、線形制約のもとで線形の目的関数を最大化または最小化する事例である。
例: 2つの製品による利益の最大化
ある工場は週にx x x とy y y 単位の2つの製品を生産し、利益z = 3 x + 5 y z=3x+5y z = 3 x + 5 y を得る。生産はx ≤ 4 x\le 4 x ≤ 4 、2 y ≤ 12 2y\le 12 2 y ≤ 12 、3 x + 2 y ≤ 18 3x+2y\le 18 3 x + 2 y ≤ 18 によって制限され、x , y ≥ 0 x,y\ge 0 x , y ≥ 0 である。z z z を最大化するx x x とy y y の値を求めよ。
解答 制約x ≤ 4 x\le 4 x ≤ 4 はx x x を直接制限し、2 y ≤ 12 2y\le 12 2 y ≤ 12 はy ≤ 6 y\le 6 y ≤ 6 を意味し、3 x + 2 y ≤ 18 3x+2y\le 18 3 x + 2 y ≤ 18 は拘束条件となる資源制約である。x , y ≥ 0 x,y\ge 0 x , y ≥ 0 と合わせて、これら4本の直線は頂点( 0 , 0 ) (0,0) ( 0 , 0 ) 、( 4 , 0 ) (4,0) ( 4 , 0 ) 、( 4 , 3 ) (4,3) ( 4 , 3 ) 、( 2 , 6 ) (2,6) ( 2 , 6 ) 、( 0 , 6 ) (0,6) ( 0 , 6 ) を持つ五角形を切り出す。
基本定理により、この有界な実行可能多角形上での線形目的関数z = 3 x + 5 y z=3x+5y z = 3 x + 5 y の最大値はこれら5つの頂点のいずれかで達成されるため、各頂点でz z z を評価すればよい:z ( 0 , 0 ) = 0 z(0,0)=0 z ( 0 , 0 ) = 0 、z ( 4 , 0 ) = 12 z(4,0)=12 z ( 4 , 0 ) = 12 、z ( 4 , 3 ) = 3 ( 4 ) + 5 ( 3 ) = 27 z(4,3)=3(4)+5(3)=27 z ( 4 , 3 ) = 3 ( 4 ) + 5 ( 3 ) = 27 、z ( 2 , 6 ) = 3 ( 2 ) + 5 ( 6 ) = 36 z(2,6)=3(2)+5(6)=36 z ( 2 , 6 ) = 3 ( 2 ) + 5 ( 6 ) = 36 、z ( 0 , 6 ) = 30 z(0,6)=30 z ( 0 , 6 ) = 30 。
最大値はz = 36 z=36 z = 36 であり、頂点( x , y ) = ( 2 , 6 ) (x,y)=(2,6) ( x , y ) = ( 2 , 6 ) で達成される。これはちょうど制約2 y ≤ 12 2y\le 12 2 y ≤ 12 と3 x + 2 y ≤ 18 3x+2y\le 18 3 x + 2 y ≤ 18 が交わる点であり、最適点で両方の資源が使い尽くされていることを確認できる。
例: 双対問題から資源価格を読み取る
先の例の工場について、経営陣が制約3 x + 2 y ≤ 18 3x+2y\le 18 3 x + 2 y ≤ 18 にもう1単位追加したときの限界価値、つまりその資源をもう1単位増やすとどれだけ追加の利益が得られるかを知りたいとする。双対問題を用いて、線形計画問題全体を最初から解き直すことなく、この限界価値(シャドープライス)を求めよ。
解答 z = 3 x + 5 y z=3x+5y z = 3 x + 5 y をx ≤ 4 x\le 4 x ≤ 4 、2 y ≤ 12 2y\le 12 2 y ≤ 12 、3 x + 2 y ≤ 18 3x+2y\le 18 3 x + 2 y ≤ 18 、x , y ≥ 0 x,y\ge 0 x , y ≥ 0 のもとで最大化する問題の双対は、y 1 + 3 y 3 ≥ 3 y_1+3y_3\ge 3 y 1 + 3 y 3 ≥ 3 、2 y 2 + 2 y 3 ≥ 5 2y_2+2y_3\ge 5 2 y 2 + 2 y 3 ≥ 5 、y 1 , y 2 , y 3 ≥ 0 y_1,y_2,y_3\ge 0 y 1 , y 2 , y 3 ≥ 0 のもとで最小化するmin w = 4 y 1 + 12 y 2 + 18 y 3 \min\, w=4y_1+12y_2+18y_3 min w = 4 y 1 + 12 y 2 + 18 y 3 であり、y 1 , y 2 , y 3 y_1,y_2,y_3 y 1 , y 2 , y 3 はそれぞれ制約x ≤ 4 x\le 4 x ≤ 4 、2 y ≤ 12 2y\le 12 2 y ≤ 12 、3 x + 2 y ≤ 18 3x+2y\le 18 3 x + 2 y ≤ 18 に付随する双対価格である。
強双対性により、双対問題の最適値は先に求めた主問題の最適値w ∗ = z ∗ = 36 w^{*}=z^{*}=36 w ∗ = z ∗ = 36 に等しい。最適頂点( x , y ) = ( 2 , 6 ) (x,y)=(2,6) ( x , y ) = ( 2 , 6 ) では、制約2 y ≤ 12 2y\le 12 2 y ≤ 12 と3 x + 2 y ≤ 18 3x+2y\le 18 3 x + 2 y ≤ 18 のみが拘束的であり(制約x ≤ 4 x\le 4 x ≤ 4 はx = 2 < 4 x=2<4 x = 2 < 4 なので緩い)、相補性条件により緩い制約の双対価格はゼロになる:y 1 = 0 y_1=0 y 1 = 0 。
y 1 = 0 y_1=0 y 1 = 0 のとき、残りの双対制約は3 y 3 ≥ 3 3y_3\ge 3 3 y 3 ≥ 3 と2 y 2 + 2 y 3 ≥ 5 2y_2+2y_3\ge 5 2 y 2 + 2 y 3 ≥ 5 になり、2つの拘束的な双対等式3 y 3 = 3 and 2 y 2 + 2 y 3 = 5 3y_3=3 \text{ and } 2y_2+2y_3=5 3 y 3 = 3 and 2 y 2 + 2 y 3 = 5 を解くとy 3 = 1 and y 2 = 1.5 y_3=1 \text{ and } y_2=1.5 y 3 = 1 and y 2 = 1.5 が得られる:制約3 x + 2 y ≤ 18 3x+2y\le 18 3 x + 2 y ≤ 18 のシャドープライスはy 3 = 1 y_3=1 y 3 = 1 であり、その資源をもう1単位増やすと最大利益がおよそ1 1 1 増加することを意味する。
よくある誤り. よくある誤りは、制約を追加すると実行可能領域は縮小し、最適値は悪化するだけだと考えることである——これは正しいのだが——しかし、誤って書かれた制約(例えば不等号の向きが逆になっているもの)は実行可能領域を空にしたり非有界にしたりする可能性があることを忘れがちである。その場合、線形計画問題には有限の最適値がまったく存在せず、シンプレックス法は誤った答えを黙って返すのではなく、この状況を検出する。 歴史的ノート
ジョージ・ダンツィクは1947年、アメリカ空軍のロジスティクス計画に取り組む中でシンプレックス法を考案し、線形計画法を理論的な興味の対象からほとんど一夜にして実用的な計算ツールへと変えた。同じ時期、ジョン・フォン・ノイマンは、彼が2人零和ゲームについて証明したミニマックス定理と線形計画の双対性を結びつけ、主問題・双対問題の関係にゲーム理論的な解釈を与え、シンプレックス法の正しさが依拠する数学的基盤を確立する助けとなった。
ジョン・フォン・ノイマン
目的関数z = 3 x + 5 y z=3x+5y z = 3 x + 5 y を持ち、実行可能な頂点が( 0 , 0 ) (0,0) ( 0 , 0 ) 、( 4 , 0 ) (4,0) ( 4 , 0 ) 、( 4 , 3 ) (4,3) ( 4 , 3 ) 、( 2 , 6 ) (2,6) ( 2 , 6 ) 、( 0 , 6 ) (0,6) ( 0 , 6 ) である工場の例において、z z z の値を最大にする頂点はどれか。
( 0 , 0 ) (0,0) ( 0 , 0 ) ( 4 , 3 ) (4,3) ( 4 , 3 ) ( 2 , 6 ) (2,6) ( 2 , 6 ) ( 0 , 6 ) (0,6) ( 0 , 6 ) 線形計画法の基本定理によれば、有界で空でない実行可能領域を持つ線形計画問題が最適解を持つ場合、その最適解は常にどこに見つかるか。
実行可能領域のある頂点(端点) 実行可能領域の重心 すべての制約が真の不等式になる点のみ 特に決まっていない——目的関数による
弱双対性は、主問題の最大化線形計画とその双対最小化線形計画について何を保証するか。
任意の実行可能な組について、主問題の目的関数値は双対問題の目的関数値を決して超えない 最適性に達する前でも、主問題と双対問題の目的関数値は常にぴったり等しい 双対問題は決して実行可能解を持たない 主問題は非有界でなければならない
航空会社は、人員配置規則と勤務時間制限を満たしながら、最も費用の低い乗務員の組み合わせをフライトに割り当てる必要がある。この問題はどの技法の典型的な例か。
線形計画法 微分方程式を解くこと ランダムウォークのシミュレーション 位相不変量の計算