MathLabs

応用数学と計算数学

線形計画法

線形の制約条件のもとで線形の目的関数を最適化し、シンプレックス法によって効率的に解く手法。

直観限られた資源から最大の利益を絞り出す

共有する機械稼働時間と原材料を使って2種類の製品を作る小さな工場を想像してほしい。各製品は単位あたり異なる利益をもたらし、機械時間、原材料、保管スペースといった各制約は生産できる量を制限する。線形計画法が問うのは、どの制約も破らずに総利益を最大化するには各製品をどれだけ作るべきかということである。利益関数とすべての制約が直線(高次元では平らな超平面)であるため、実行可能な生産計画の集合は凸多面体を形成し、最良の計画は常にその頂点の1つに位置する。

頂点、辺、面を明らかにするために分解できるインタラクティブな3D多面体で、線形計画問題の実行可能領域を表す。
多面体を頂点ごとに分解して見せる:線形計画問題では、実行可能領域はまさにこのような多面体であり、線形計画法の基本定理は最適解がこれらの頂点のいずれかに位置することを保証する。

中高標準形

定義: 線形計画問題の標準形

標準形の線形計画問題は、線形の目的関数cTxc^{\mathsf{T}}xを最大化するために決定変数ベクトルxxを選び、線形不等式制約Ax≤bAx\le bと非負条件x≥0x\ge 0に従う。ここでccは単位あたりの利益のベクトル、AAは資源使用係数の行列、bbは資源制限のベクトルである。

max⁡x  cTxsubject toAx≤b,  x≥0\max_{x} \; c^{\mathsf{T}} x \quad \text{subject to} \quad Ax \le b, \; x \ge 0

Ax≤bAx\le bの各行は1つの限られた資源を表す:左辺は生産計画xxがその資源をどれだけ消費するかであり、右辺bbは利用可能な量である。各行にスラック変数s≥0s\ge 0を加えることで、すべての不等式は等式Ax+s=bAx+s=bに変わり、これがシンプレックス法が実際に扱う形である。

Ax+s=b,s≥0Ax + s = b, \qquad s \ge 0
線形計画問題を解く手法の比較
手法探索の仕方何変数まで拡張できるか最悪計算量
図解法実行可能多角形を描き、目的関数の直線をその上でスライドさせる2変数のみ(3D図なら3変数)適用不可(視覚的手法)
シンプレックス法頂点から隣接する頂点へ移動し、常に目的関数を改善する実務では数百から数千変数理論上は指数時間だが実務では高速
内点法多面体の内部を通って最適点へ移動する非常に大規模な問題(数百万変数)多項式時間

大学基本定理とシンプレックス法

実行可能領域P={x:Ax≤b,x≥0}P=\{x : Ax\le b, x\ge 0\}が空でなく有界であるとする。線形計画問題max⁡x∈PcTx\max_{x\in P} c^{\mathsf{T}}xが最適値を持つならば、その最適値はPPのある頂点(端点)で達成される。

なぜ正しいのか?

目的関数は線形であるため、そのレベル集合は互いに平行な超平面である。そのような超平面を凸多面体上でスライドさせるとき、領域を離れる直前に触れる最後の点は常に頂点であり、面の内部の点になることはない。なぜなら、内部の点は常に目的関数を改善する方向にさらに押し進めることができるからである。

証明

PPは有限個の線形不等式で定義された有界な多面体であるから、有限個の頂点v1,…,vkv_1,\ldots,v_kを持ち、多面体に関する古典的な事実(ミンコフスキーの定理)により、PPのすべての点はこれらの頂点の凸結合として表される:x=∑i=1kλivix=\sum_{i=1}^{k}\lambda_i v_i、ここでλi≥0\lambda_i\ge 0かつ∑iλi=1\sum_i \lambda_i=1である。

目的関数cTxc^{\mathsf{T}}xは線形であるから、そのような凸結合上でこれを評価するとcTx=∑iλi(cTvi)≤(max⁡icTvi)∑iλi=max⁡icTvic^{\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が得られる。これは各λi≥0\lambda_i\ge 0であり、それらの和が11になるからである。

これは、すべての実行可能なxxの目的関数値が最良の頂点値max⁡icTvi\max_i c^{\mathsf{T}}v_iを超えないことを示す。しかし、その最良の頂点、vi∗v_{i^*}と呼ぶことにすると、それ自体がPPの実行可能点であるから、実際にこの上界を達成する:cTvi∗=max⁡x∈PcTxc^{\mathsf{T}}v_{i^*}=\max_{x\in P} c^{\mathsf{T}}x。したがって、線形計画問題の最適値は頂点vi∗v_{i^*}で達成され、主張が証明される。

基本定理により、最適値の探索をPPの有限個の頂点に限定できるが、制約が多い場合にすべての頂点を直接調べるのは遅すぎる。代わりにシンプレックス法は、ある頂点から出発し、目的関数を厳密に増加させる辺に沿って隣接する頂点へと繰り返し移動し、どの隣接頂点もそれより良くないときにのみ停止する——その時点で、すべての被約費用は非負であり、現在の頂点が最適であることが証明される。

主問題max⁡{cTx:Ax≤b,x≥0}\max\{c^{\mathsf{T}}x : Ax\le b, x\ge 0\}に対して、双対問題min⁡{bTy:ATy≥c,y≥0}\min\{b^{\mathsf{T}}y : A^{\mathsf{T}}y\ge c, y\ge 0\}を定義する。このとき(弱双対性)主問題の実行可能なxxと双対問題の実行可能なyyのすべてについてcTx≤bTyc^{\mathsf{T}}x\le b^{\mathsf{T}}yが成り立ち、(強双対性)主問題が最適解x∗x^{*}を持つならば、双対問題は最適解y∗y^{*}を持ちcTx∗=bTy∗c^{\mathsf{T}}x^{*}=b^{\mathsf{T}}y^{*}が成り立つ。

なぜ正しいのか?

双対性は、主問題の最大化と双対問題の最小化が同じ数値に対する2つの見方であることを述べている:双対変数yyは資源の価格として働き、弱双対性は、どんな有効な価格付けのもとでも、実行可能などの生産計画もそれが使う資源の価値以上には決して稼げないことを述べ、強双対性は、最適点において最良の生産計画と最も安い有効な価格付けがちょうど一致することを述べる。

証明

(弱双対性。)xxを主問題の任意の実行可能点(Ax≤bAx\le b、x≥0x\ge 0)とし、yyを双対問題の任意の実行可能点(ATy≥cA^{\mathsf{T}}y\ge c、y≥0y\ge 0)とする。x≥0x\ge 0とATy≥cA^{\mathsf{T}}y\ge cより、この不等式に非負ベクトルxxを掛けても向きは変わらない:cTx≤(ATy)Tx=yTAxc^{\mathsf{T}}x\le \left(A^{\mathsf{T}}y\right)^{\mathsf{T}}x=y^{\mathsf{T}}Ax。y≥0y\ge 0とAx≤bAx\le bより、同様の議論からyTAx≤yTb=bTyy^{\mathsf{T}}Ax\le y^{\mathsf{T}}b=b^{\mathsf{T}}yが得られる。この2つの不等式をつなげると、任意の実行可能な組についてcTx≤bTyc^{\mathsf{T}}x\le b^{\mathsf{T}}yが成り立ち、これが弱双対性である。

(強双対性。)主問題に対してシンプレックス法を実行し、最適基底行列BBを持つ最適な基底実行可能解x∗x^{*}で終了するとする。このときxB∗=B−1bx^{*}_B=B^{-1}bが成り立ち、非基底変数の被約費用はすべて非負である——この終了条件はy∗T=cBTB−1y^{*\mathsf{T}}=c_B^{\mathsf{T}}B^{-1}を定義することと同値であり、これがATy∗≥cA^{\mathsf{T}}y^{*}\ge cとy∗≥0y^{*}\ge 0を満たすこと、すなわちy∗y^{*}が双対実行可能であることを確認できる。

代入すると、主問題の最適値はcTx∗=cBTxB∗=cBTB−1b=y∗Tb=bTy∗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^{*}となる。弱双対性(常にcTx∗≤bTy∗c^{\mathsf{T}}x^{*}\le b^{\mathsf{T}}y^{*}が成り立つ)と組み合わせると、ここでの等号はy∗y^{*}もまた双対最適解であることを強制し、したがってcTx∗=bTy∗c^{\mathsf{T}}x^{*}=b^{\mathsf{T}}y^{*}となり、強双対性が証明される。

大学実世界での応用と具体例

線形計画法は、さまざまな業界の意思決定ソフトウェアの基盤となっている:航空会社は数百万の変数を持つ乗務員スケジューリングや機材割り当てのLPを解き、製油所は最小コストで製品規格を満たすよう原油を配合し、通信会社はスループットを最大化するようネットワークトラフィックを経路制御し、ポートフォリオマネージャーはリスク制限のもとで資産に資本を配分する——これらはすべて、線形制約のもとで線形の目的関数を最大化または最小化する事例である。

例: 2つの製品による利益の最大化

ある工場は週にxxとyy単位の2つの製品を生産し、利益z=3x+5yz=3x+5yを得る。生産はx≤4x\le 4、2y≤122y\le 12、3x+2y≤183x+2y\le 18によって制限され、x,y≥0x,y\ge 0である。zzを最大化するxxとyyの値を求めよ。

解答

制約x≤4x\le 4はxxを直接制限し、2y≤122y\le 12はy≤6y\le 6を意味し、3x+2y≤183x+2y\le 18は拘束条件となる資源制約である。x,y≥0x,y\ge 0と合わせて、これら4本の直線は頂点(0,0)(0,0)、(4,0)(4,0)、(4,3)(4,3)、(2,6)(2,6)、(0,6)(0,6)を持つ五角形を切り出す。

基本定理により、この有界な実行可能多角形上での線形目的関数z=3x+5yz=3x+5yの最大値はこれら5つの頂点のいずれかで達成されるため、各頂点でzzを評価すればよい:z(0,0)=0z(0,0)=0、z(4,0)=12z(4,0)=12、z(4,3)=3(4)+5(3)=27z(4,3)=3(4)+5(3)=27、z(2,6)=3(2)+5(6)=36z(2,6)=3(2)+5(6)=36、z(0,6)=30z(0,6)=30。

最大値はz=36z=36であり、頂点(x,y)=(2,6)(x,y)=(2,6)で達成される。これはちょうど制約2y≤122y\le 12と3x+2y≤183x+2y\le 18が交わる点であり、最適点で両方の資源が使い尽くされていることを確認できる。

例: 双対問題から資源価格を読み取る

先の例の工場について、経営陣が制約3x+2y≤183x+2y\le 18にもう1単位追加したときの限界価値、つまりその資源をもう1単位増やすとどれだけ追加の利益が得られるかを知りたいとする。双対問題を用いて、線形計画問題全体を最初から解き直すことなく、この限界価値(シャドープライス)を求めよ。

解答

z=3x+5yz=3x+5yをx≤4x\le 4、2y≤122y\le 12、3x+2y≤183x+2y\le 18、x,y≥0x,y\ge 0のもとで最大化する問題の双対は、y1+3y3≥3y_1+3y_3\ge 3、2y2+2y3≥52y_2+2y_3\ge 5、y1,y2,y3≥0y_1,y_2,y_3\ge 0のもとで最小化するmin⁡ w=4y1+12y2+18y3\min\, w=4y_1+12y_2+18y_3であり、y1,y2,y3y_1,y_2,y_3はそれぞれ制約x≤4x\le 4、2y≤122y\le 12、3x+2y≤183x+2y\le 18に付随する双対価格である。

強双対性により、双対問題の最適値は先に求めた主問題の最適値w∗=z∗=36w^{*}=z^{*}=36に等しい。最適頂点(x,y)=(2,6)(x,y)=(2,6)では、制約2y≤122y\le 12と3x+2y≤183x+2y\le 18のみが拘束的であり(制約x≤4x\le 4はx=2<4x=2<4なので緩い)、相補性条件により緩い制約の双対価格はゼロになる:y1=0y_1=0。

y1=0y_1=0のとき、残りの双対制約は3y3≥33y_3\ge 3と2y2+2y3≥52y_2+2y_3\ge 5になり、2つの拘束的な双対等式3y3=3 and 2y2+2y3=53y_3=3 \text{ and } 2y_2+2y_3=5を解くとy3=1 and y2=1.5y_3=1 \text{ and } y_2=1.5が得られる:制約3x+2y≤183x+2y\le 18のシャドープライスはy3=1y_3=1であり、その資源をもう1単位増やすと最大利益がおよそ11増加することを意味する。

目的関数z=3x+5yz=3x+5yを持ち、実行可能な頂点が(0,0)(0,0)、(4,0)(4,0)、(4,3)(4,3)、(2,6)(2,6)、(0,6)(0,6)である工場の例において、zzの値を最大にする頂点はどれか。

線形計画法の基本定理によれば、有界で空でない実行可能領域を持つ線形計画問題が最適解を持つ場合、その最適解は常にどこに見つかるか。

弱双対性は、主問題の最大化線形計画とその双対最小化線形計画について何を保証するか。

航空会社は、人員配置規則と勤務時間制限を満たしながら、最も費用の低い乗務員の組み合わせをフライトに割り当てる必要がある。この問題はどの技法の典型的な例か。

参考文献

  1. George B. Dantzig (1963). Linear Programming and Extensions
  2. Dimitris Bertsimas, John N. Tsitsiklis (1997). Introduction to Linear Optimization