スタートページ> Web教材一覧> オペレーションズリサーチ> 線形計画法
線形計画法(LP:リニアプログラミング)の代表的な解法にシンプレックス法があります。シンプレックス法とは,簡単な数学的知識により線形計画法を解くアルゴリズム(答を求めるための計算手段)です。現実にはシンプレックス法により手計算で解くことはないでしょうが,シンプレックス法を理解することは,線形計画法をよりよく理解することにつながります。
線形計画法(LP:リニアプログラミング),シンプレックス法,掃出計算
目的関数
Z=3x1 +2x2 → 最大
制約条件
4x1 +1x2 ≦72
2x1 +2x2 ≦48
1x1 +3x2 ≦48
(注)この元の問題は「線形計画法の定式化と図式解法」にあります。そこではx,y,a,b,cという変数名を用いていましたが,ここからは,数学的な表現をするために,このような変数名を用います。
上の不等式は,次のように等式に表現することができます。
4x1+1x2+1λ1=72
2x1+2x2+1λ2=48
1x1+3x2+1λ3=48
また,一般に線形計画法では最小化問題を基準としていますので,目的関数のx1とx2の係数をマイナスにして最小化問題にします。すると,
Z=-3x1 -2x2+1λ1+1λ2+1λ3 → 最小
になります。
このようなλ1,λ2,λ3のことをスラック変数といいます。λ1とは,制約条件 4x1 +1x2 ≦72 の余裕であり,原料Aの在庫が使われずに残った数量であると解釈されます。
これを「表0」のよう表にしたものを単体表(シンプレックス・タブロー)といいます。シンプレックスとは「単体」という意味で,シンプレックス法とはこの単体表を操作することにより,線形計画法を解く方法です。
行 ↓ |
2次元表を一般に行列といいます。そして縦を行,横を列といい,個々のセルを要素といいます。例えば「目的関数の行のx1の列の要素の値は-3である」というような表現をします。
なお,表0に「基底」という列があります。これは,変数に値を入れた(生産をした)変数の名称です。ここにλ1,λ2,λ3があるのは,これらの変数を定数項だけ作る(すなわちx1もx2も生産しない)ことを意味しています。このときの目的関数の値(定数項)は0になりますので定数項を0にしておきます。
上の表で,i行j列の要素をA(i,j) ということにします。ピボットの要素はA(K,L) になりますが,その値をPとします。
実際に表0に対してこの手順を行ってみましょう。
ここまでの計算でわかるように,掃出計算とは連立方程式からある変数を消去する操作なのです。この操作により,表0は次の表1に書き換えられました。ピボットになったL列について,K行は1,それ以外は0になっているはずです。
表1
表1は,x1=18,λ2=12,λ3=30としたとき,目的関数の値が54になることを示しています。表0→表1の操作を図式解法で図示すると,下図のAを行ったことになります。
表1の目的関数の行には,未だマイナスの要素がありますので最適解ではありません。それで第2回の操作をするのですが,その操作は上図でのBを行うことです。
表2
この結果,目的関数の行がすべて0以上になるので,どれを作成しても目的関数は増加しないので,これが最適解であることがわかります。
「基底」と「定数項」を見てください。これより,「x1 =16,x2 =8,λ3 =8のとき,目的関数は最大値64になる」と読み取ります。ここでλ3 =8とは,制約式 1x1 +3x2 ≦48 において8の余裕があるという意味です。
以下に表0~表2の全体を示します。
目的関数
Z=4x1 +3x2 →最大
制約条件
2x1 +1x2 ≦30 (a)
3x1 +4x2 ≦60 (b)
1x1 +2x2 ≦26 (c)
(x1 ≧0,x2 ≧0)・・・暗黙の条件
シンプレックス表は次のようになります。これより,
x1 =12
x2 = 6
のとき,最大値=66になります。