スタートページ> Web教材一覧> オペレーションズリサーチ> 線形計画法
線形計画法のシンプレックス法は,単に最適解を得るだけでなく,シャドウ・プライスやレンジなどの感度分析に重要な情報を得ることができます。シャドウ・プライスは,制約条件が少し緩くなったらどれだけ利益があがるかを示すものであり,レンジは最適解の構造を変化させずに定数項や価格をどれだけ変化できるかを示すものです。
線形計画法,シンプレックス法,シャドウ・プライス,レンジ,感度分析
目的関数
Z=3x1+2x2 → 最大
制約条件
4x1+1x2≦72
2x1+2x2≦48
1x1+3x2≦48
x1≧0,x2≧0
この問題を図式解法およびシンプレックス法により解くと次のようになりました。
Reduced cost、潜在価格ともいいます。下段の目的関数の行では,λ1が0.33,λ2が0.83でプラスになっています。これは,λ1を1だけ作ると目的関数が0.33だけ「減少」することを示しています。λ1を1作るということは,4x1+1x2+1λ1=72においてλ1=1として,4x1+1x2+=71としたことに一致します。
これをグラフで見ると,青色の太線4x1+1x2+=72のときは,最適解はP点であり,目的関数は赤の太線でした。それが,4x1+1x2+=71になると青色の点線になるので,最適解はQに移動して,目的関数は赤の点線になります。この赤の太線が点線に移動したときの目的関数の値の減少が0.33なのです。
さらに物理的な意味では,λ1の在庫が1だけ少ないと0.33だけ利益が減少することであり,逆にいえば,λ1の価格が0.33よりも安ければ購入しx1やx2を増産したほうがよいということです。それでこの0.33をλ1のシャドウ・プライスといいます。
それに対してλ3は目的関数の値が0です。これは在庫が減っても増えても利益には関係しないことを示しています。それは最適解がλ3=8であり,この制約条件に余裕があることと一致します。ですから,λ3のシャドウ・プライスは0になります。
このシャドウ・プライスの概念は,会計学での限界費用に似た概念であり,制約条件の余裕の有無により価値が変化するという,非常に重要な概念なのです。
制約式の定数項の値が変化しても、基底が変化しない範囲を求めます。
制約式 λ1:4x1+1x2≦72を例にします。λ1は基底に入っていません。すなわち。定数項の値72を使い切っており余裕はない状態です。
まずグラフで説明しましょう。制約式:4x1+1x2≦72を例にします。青色の太線で最適値はP点でした。この72をεだけ、変化させることを考えます。
この定数項72を減少する(ε<0)と、最適値は直線PRにそって移動します。R点に達して(定数項=60.ε=-12)それを超えると,いままで余裕のあった1x1+3x2≦48がネックになり,下段の単体表が最適解ではなくなってしまいます。
逆に定数項を増大(ε をプラス側に増大)すると,最適解は直線PSにそって移動し,S点を超えると青線に余裕ができてしまいます。このときの定数項は96(ε=24)になります。
この制約式の定数項のレンジは、下限60(ε=-12)、上限96(ε=24)であるといいます。
次に、上の結果から、定数項のレンジを求める方法を説明します。
解説をあえて省略しますが,上の単体表の上段の表での制約式・スラック変数の部分の行列(黄)をAとすると,下段のその部分(青)はAの逆行列であるA-1に相当します。そして,A-1に上段の列をBとしてA-1・Bの行列乗算を行うと,下段の対応する列になるのです。たとえばBを上段の定数項(緑)とすると,下段の定数項B’(茶)は次のように計算できます。
A-1 B B’
┌ ┐ ┌ ┐ ┌ ┐ ┌ ┐
│ 0.33 -0.17 0│×│72│=│ 0.33*72-0.17*48+0*48│=│16│
│-0.33 0.67 0│ │48│ │-0.33*72+0.67*48+0*48│ │ 8│ ①
│ 0.67 -1.83 1│ │48│ │ 0.67*72-1.83*48+1*48│ │ 8│
└ ┘ └ ┘ └ ┘ └ ┘
定数項72を(72+ε)とし、他はそのままとすると,先頭行は次のようになります。
0.33X(72+ε)-0.17X48+0X48
=16+0.33ε
ここで、定数項は負になれないので、16+0.33ε≧0 → ε≧-48 となります。
以下の行も同様に
8-0.33ε≧0 → ε≦ 24
8+0.67ε≧0 → ε≧-12
となります。
この全体を満足する範囲(正での最小値、負での最大値)は
ー12≦ε≦24 定数項の下限=72-12=60,上限=72+24=96
となり、グラフでの結果と一致します。
目的関数の値も次のようにして計算できます。
┌ ┐ ┌ ┐ ┌ ┐
│0.33 -0.83 0│×│72│=│64│
└ ┘ │48│ └ ┘
│48│
└ ┘
0.33×72+0.83×48+0×48=64
ここで72を72+ε とすると,目的関数の値は 64+0.33ε となります。これはλ1のレジューストコストが0.33であること(赤)と一致します。
制約式 λ2:2x1+2x2≦48 も基底にないので、次のように計算できます。
16-0.17ε≧0 → ε≦ 96
8+0.67ε≧0 → ε≧-12
8-1.83ε≧0 → ε≦ 5
ー12≦ε≦54 48-12=36(Y軸),48+5=53(T点)
制約式:1x1+3x2≦48 は基底にあります。定数項48のうち、使ったのは8だけで、40の余裕があります。
現在でも余裕があるので、上限は∞になります。
下限は、その余裕(8)を使い切ったときですから、ε≧-8 → 48-8=40(T点)
すなわち、入力時の定数項(緑)-最適解の定数項(茶)になります。
現在はP点で商品の最適生産量が計算されていますが、極端に x1 の価格が高くなれば、現在の資源でできる限り x1 を生産し、その余りで x2 を生産するのが当然です。では、P点が最適となる x1 の価格の上下限はいくつかというのがここの問題です。
x1を例にします。基底にあります。
x1の価格をあげていくと,目的関数 3x1+2x2 の傾きは次第に垂直方向に変化していき,4x1+1x2=72 と重なるようになります。そのときの目的関数のx1の係数は8になります。逆に価格を下げていけば,2x1+2x2≦48 と重なりますが,そのときの係数の値は2になります。
2≦x1価格≦8 -1≦ε≦5
x1の価格が ε だけ増加(-3-ε にした)とき,λ1のシャドウ・プライス(赤)は0.333ε だけ増加して,0.333+0.333ε になります。
これがマイナスになると,さらに最適解の計算をする必要がありますので,
0.333+0.333ε≧0 → ε≧-1
になります。
λ2についても同様に
0.833-0.17ε≧0 → ε≦5
になります。
λ3では、係数が0なので、無視します。
全体を満足する範囲は
-1≦ε≦5 → 目的関数の下限=-3-(-1)=-2、上限=-3-5=-8
になります。
この目的関数は、本来の価格を正負反転したのですから、
2≦x1の価格≦8
となります。
x2も基底にあるので、x1と同様にします。
x1の価格が ε だけ増加(-3-ε にした)とき,目的関数(赤)は、
λ1: 0.333 - 0.333ε≧0 → ε≦1
λ2: 0.888 + 0.677ε≧0 → ε≧-1.25
λ2: 0/0 → 無視
共通範囲:-1.25≦ε≦1 → 目的関数の下限=-2-(-1.25)=-0.75, 上限=-2-1=-3
0.75≦x1の価格≦3
となります。
この例では、このケースはありませんが、もし、そのような場合は、現在でも最適解は0(生産しない)のですから、価格の下限は-∞になります。上限は価格+シャドウプライスになります。
目的関数
Z=4x1+3x2 →最大
制約条件
2x1+1x2≦30 (a)
3x1+4x2≦60 (b)
1x1+2x2≦26 (c)
この解は次のようになります(グラフでは,x1をx,x2をyとしています。
グラフから,最小値は2x1+1x2が点Q(8,9) を通るときである。このときの定数項は2×8+1×9=25になる。また最大値は点(20,0) を通るときで40となる。
シンプレックス法から求めるには,この定数項がε 増加したときは,最適解の表のλ1の列から,次のような操作により,ε の範囲が-5≦ε≦10であることがわかる。
変更前 εの変化 εのとり得る範囲
12 0.8ε -15≦ε
6 -0.6ε ε≦10
2 0.4ε -5≦ε
4x1+3x2のグラフは,この4が小さくなるにつれて傾きが水平に近づく。最適解が変わるのはこれが3x1+4x2=60のグラフの傾きと一致したときであるから,そのときの4は3×3/4=2.25となる。逆に増加したときは2x1+1x2と一致するときであるから,最大値は6となる。
シンプレックス法から求めるには,最適解のx1の行は,
1x1+0.8λ1-0.2λ2=12
であり,ε 変化したときのλ1とλ2のシャドウ・プライスは次のようになる。
変更前 εの変化 εのとり得る範囲 4+ε
1.4 0.8ε -1.75≦ε 4-1.75=2.25
0.4 -0.2ε ε≦2 4+2=6