線形計画法(LP : Linear Programming)とは、制約式(制約条件)と呼ばれるいくつかの1次式を満たす変数の値の中で、
目的関数と呼ばれる1次関数を最大化または最小化する値を求める方法である。
この目的式の最大値、及びそれを実現する変数を求める問題が線形計画問題である。
また、線形計画問題を解く手法の一つとしてシンプレックス法がある。
解き方の説明(シンプレックス法)
問題
ある会社が、A、Bという製品を売り出している。 それらを製作するための材料はプラスチック、アルミ、ゴムである。
それぞれ1個を製作するために必要な材料の量は下の表のとおりである。
製品材料 |
プラスチック |
アルミ |
ゴム |
単価 |
A |
1kg |
1kg |
3kg |
2万円 |
B |
2kg |
1kg |
1kg |
3万円 |
材料の量 |
14kg |
8kg |
18kg |
|
このとき、手持ちの材料の範囲内で売上高を最大にするためには、A、Bをそれぞれいくつ作ったらよいか?
連立法定式
最大値 :20X1 + 30X2
制約条件:X1 + 2X2 ≦ 800
3X1 + 4X2 ≦ 1800
3X1 + X2 ≦ 1500 X1、X2 ≧ 0
シンプレックス法を適用するための準備
与えられた線形計画問題を正規形に変形する。正規形に変形された問題の目的関数をZとおく。
最大値:Z
制約条件: X1 + 2X2 + S1 = 800
3X1 + 4X2 + S2 = 1800
3X1 + X2 + S3 = 1500
Z - 20X1 - 30X2 = 0 X1、X2 、S1、S2、S3 ≧ 0
シンプレックス法の手順
ステップ1:シンプレックス表を作成する。
基底変数 |
Z |
X1 |
X2 |
S1 |
S2 |
S3 |
定数項 |
S1 |
0 |
1 |
2 |
1 |
0 |
0 |
800 |
S2 |
0 |
3 |
4 |
0 |
1 |
0 |
1800 |
S3 |
0 |
3 |
1 |
0 |
0 |
1 |
1500 |
Z |
1 |
-20 |
-30 |
0 |
0 |
0 |
0 |
ステップ2:ピポットを計算する。
-
Z行で最も小さい負の値を持つ列に対応する非基底変数を新たに基底に入れる変数に選ぶ。(X2列)
-
各行(Zの行は除く)において(定数項の値)÷(新たに基底に入れることになった変数の係数)を計算する。
その値を増加限界と呼ぶ。
各行の増加限界の中で非負で最小の値を取った行に対応する変数を追い出す変数に決める。(S1行)
-
新たに基底に加える変数の列と基底から追い出す変数の行との交点の係数をピボットにする。
ピボット(S1行、X2列)ピボットを中心に掃き出しを行う。
基底変数 |
Z |
X1 |
X2 |
S1 |
S2 |
S3 |
定数項 |
増加限界 |
S1 |
0 |
1 |
2 |
1 |
0 |
0 |
800 |
400 |
S2 |
0 |
3 |
4 |
0 |
1 |
0 |
1800 |
450 |
S3 |
0 |
3 |
1 |
0 |
0 |
1 |
1500 |
1500 |
Z |
1 |
-20 |
-30 |
0 |
0 |
0 |
0 |
|
ステップ3:連立方程式の解を解く
-
ピボットが1になるように,ピボットのある行のすべての数字をピボットの数字で割る。
-
各行からピボットの行を何倍かして引くことにより、ピボット列の数字がピボット以外0になるようにする。
基底変数 |
Z |
X1 |
X2 |
S1 |
S2 |
S3 |
定数項 |
計算 |
S1 |
0 |
0.5 |
1 |
0.5 |
0 |
0 |
400 |
(ピポット行)÷2 |
S2 |
0 |
1 |
0 |
-2 |
1 |
0 |
200 |
S2行-(ピポット行)X4 |
S3 |
0 |
2.5 |
0 |
-0.5 |
0 |
1 |
1100 |
S3行-(ピポット行)X4 |
Z |
1 |
-5 |
0 |
15 |
0 |
0 |
12000 |
Z行-(ピポット行)X(-30) |
ステップ4:連立方程式の解を評価する。
現在の基底変数から得られた連立方程式の解が最適かどうか吟味する。
Zの行を見るとx1の列に負の値がある.よって,現在得られている解は最適ではない。
ステップ3
より良い目的関数値を持つ解を見つけるように基底変数と非基底変数の組合せを変更する。
ステップ2に戻り、ピポットを計算する。計算により、ピボットは計算により(S2行、X1列)として、ピボットを中心に掃き出しを行う。
基底変数 |
Z |
X1 |
X2 |
S1 |
S2 |
S3 |
定数項 |
増加限界 |
S1 |
0 |
0.5 |
1 |
0.5 |
0 |
0 |
400 |
800 |
S2 |
0 |
1 |
0 |
-2 |
1 |
0 |
200 |
200 |
S3 |
0 |
2.5 |
0 |
-0.5 |
0 |
1 |
1100 |
440 |
Z |
1 |
-5 |
0 |
15 |
0 |
0 |
12000 |
|
ステップ5:連立方程式の解を解く(ステップ3と同様に行う)
基底変数 |
Z |
X1 |
X2 |
S1 |
S2 |
S3 |
定数項 |
増加限界 |
S1 |
0 |
0 |
1 |
1.5 |
-0.5 |
0 |
300 |
S1行ー(ピポット行)X0.5 |
S2 |
0 |
1 |
0 |
-2 |
1 |
0 |
200 |
S2行÷1 |
S3 |
0 |
0 |
0 |
4.5 |
-2.5 |
1 |
600 |
S3行ー(ピポット行)X2.5 |
Z |
1 |
0 |
0 |
5 |
5 |
0 |
13000 |
Z行ー(ピポット行)X(-5) |
ステップ6:連立方程式の解を評価する。
Zの行を見ると負の値はない.
つまり,これ以上基底を変更してもより良い目的関数値は得られない.よって,現在得られている解が最適である。
※線形計画の問題を解く方法としてMicroSoft Excelのソルバーを使って解く方法があります。参考にして下さい。
Excelで線形計画の問題を解く方法
|