Upload
others
View
4
Download
0
Embed Size (px)
Citation preview
1
泉恵女学園物語・その5
おはなしDEA(包絡分析法)- 単体法への準備-
ライオネル学園大学
せん けい
ここね、先生の大学は…
2
七瀬
先生、お願いがあるんです。今度の土曜日、空いてますか?10時に先生の研究室に伺います。一日中、空けといてくださいね。
まだかな…
3
七瀬
先生、遅刻しました。すみません!
いや、いや、こっちも忘れていたよ。何か頼みがあるんだったね。まあとりあえず、かき氷でもどう?私はコーヒーでも飲もう。
いただきます、先生。ところで、変な質問していいですか?
ああ…いいよ。
4
七瀬
先生いま、つきあってる人、いるんですか?
いないな。研究一筋さ。
じゃ、土曜日も研究ですか?すごく忙しいんですね。お邪魔しちゃったかな…。
いや、そんなことはない。週に一度くらい、こんな時間もいいものさ。
あの、高校生の身分であつかましいお願いなんですけど…。
なんでも言ってごらん♪
5
七瀬
DEAのこと、もっと教えてほしいんです。
毎週土曜日、教えてもらっていいですか?
え? まあ、いいけど…。
6
七瀬
みんな、OKだって!
おじゃましまーす!
残念だったな先公!
7
七瀬
あれからみんなで、毎週土曜日、DEAについて本格的に
教えてもらおうってことになったんです。
OKしてくれてありがとう、先生!
汚い部屋ね。
あ、グルメ本だ。
センセ、借りていい?週に一度くらい、DEAもいいものさ。
コーヒーくらい
出しなさいよ。
あ、パソコン。欲しーな。
ごめんなさい。私は止めたんだけど…。
カップ汚れてる。洗ってないんですか?
このマンガ、私のものー!
あ、タバコだ。
吸うんですか?
変な本がいっぱいー。
先生、なんか
元気ないですね。
8
それではDEAの前に、まず線形計画法を教える!しっかり聞いててくれ!一度しか説明しないぞ!
はーい!
悲しい奴だよな。
なんか怒ってるみたい…。
9
線形計画法(Linear Programming)は、
いろんなところに役立つ。
例として、
夏休みの有意義な過ごし方を計算しよう。
星野くん、君の趣味は?
読書と…ショッピングかな?
10
1 百円
2 時間
3 気力
読書
7 百円
4 時間
2 気力
買い物
うれしさ
3うれしさ
5
それぞれの趣味を1回やるのに必要な、「時間」「お金」「気力」を、それぞれ書いて欲しい。あと、それを1回やったときの「うれしさ」もね。
こんなとこかな…。
11
さらに、夏休み中に使える「時間」「お金」「気力」の総量を、それぞれ教えて欲しい。
こんなところです。
1 百円
2 時間
3 気力
読書
7 百円
4 時間
2 気力
買い物
うれしさ
3うれしさ
5
140 百円
100 時間
120 気力
総量
12
1 百円
2 時間
3 気力
読書
7 百円
4 時間
2 気力
買い物
うれしさ
3うれしさ
5
140 百円
100 時間
120 気力
総量
さて…それでは夏休み中に「読書」「買い物」を、それぞれ何回ずつすればいいだろうか?
読書をx1回、買い物をx2回する、としよう。読書のうれしさは3、買い物のうれしさは5だから、うれしさの合計は3x1+5x2。これを最大にすればいい!
ちなみに3x1+5x2のことを目的関数という。しばしばZであらわされる。つまりZ= 3x1+5x2。
13
1 百円
2 時間
3 気力
読書
7 百円
4 時間
2 気力
買い物
うれしさ
3うれしさ
5
140 百円
100 時間
120 気力
総量
x1,x2を大きくすれば、 Z=3x1+5x2は
いくらでも大きくなりそうなものだ。
ところがどっこい、そうはいかない。「お金」「時間」「気力」の制約があるからだ。
たとえば読書はせいぜい40回しかできない。
気力は120しかないのに、読書1回で3気力を
消費してしまうからだ。だからx1≦40なのさ。
14
1 百円
2 時間
3 気力
読書
7 百円
4 時間
2 気力
買い物
うれしさ
3うれしさ
5
140 百円
100 時間
120 気力
総量
つまり読書をx1回、買い物をx2回するなら、お金を x1+7x2 百円、時間を 2x1+4x2 時間、気力を 3x1+2x2 気力、消費する。ところがお金は140百円、時間は100時間、気力は120気力しか存在しない。
そこで次の3本の制約条件がなりたつ。
お金の制約: x1+7x2 ≦140 百円、時間の制約: 2x1+4x2 ≦100 時間、気力の制約: 3x1+2x2 ≦120 気力。
また、x1,x2はいずれも正の値だ。
読書や買い物を「マイナス回」行なうわけにはいかないからだ。だから、x1≧0, x2≧0という条件がつく。(これらを非負条件という)
15
1 百円
2 時間
3 気力
読書
7 百円
4 時間
2 気力
買い物
うれしさ
3うれしさ
5
140 百円
100 時間
120 気力
総量
制約条件
お金の制約: x1+7x2 ≦140 百円時間の制約: 2x1+4x2 ≦100 時間気力の制約: 3x1+2x2 ≦120 気力
非負条件
x1≧0x2≧0
Z=3x1+5x2
目的関数
ゆえに「夏休み問題」は、3つの制約条件、2つの非負条件のもとで、目的関数を最大にする問題なんだ。
16
さて、この問題をグラフで解こう。X軸にx1,Y軸にx2をとって、
制約条件と非負条件をグラフにする。
すると、解の許される範囲は以下の部分になる。
40 50 140
60
2520
制約条件
Z=3x1+5x2
目的関数
お金の制約: x1+7x2 ≦140 百円
気力の制約: 3x1+2x2 ≦120 気力
時間の制約: 2x1+4x2 ≦100 時間
x1
x2
17
目的関数の式を書き直すと、x2=-0.6x1+0.2Zとなる。これは傾き-0.6の直線だ。
ところがZがわからない。つまり領域を通るような傾き-0.6の直線は、どれでも答えだ。これらのうちで、Zが最大になるのはどれだろう?
ここでx1に0を入れると、x2=0.2Zとなる。つまりZを大きくすることは、y軸との交点(y切片)を大きくすることと同じなんだ。
いろいろ試すと、点Bを通るとき、y軸との交点は最大になる。解は 点B(35, 7.5)。つまり x1=35, x2=7.5。そのとき目的関数の値は Z=3x1+5x2= 142.5。
Z=3x1+5x2
目的関数
読書を35回、
買い物を7.5回やれば
いいってことね!
C
B
Ax1
x2
18
読書を35回、買い物を7.5回やると、
どの資源をどれくらい使ったかがわかる。
星野くんの場合、
時間と気力を使い切っている。
お金ばっかり、
ずいぶん
余っちゃったなぁー。
1 百円2 時間3 気力
読書
7 百円4 時間2 気力
買い物
140 百円100 時間120 気力
総量
35回 7.5回
35 百円70 時間
105 気力
読書
52.5 百円30 時間15 気力
買い物
87.5 百円100 時間120 気力
使用量
× ×
= =
-=
52.5 百円0 時間0 気力
余り
=+
19
さて用語の整理をしておこう。
解が存在可能な範囲を実行可能領域といい、その中の点を実行可能解という。
実行可能解のうち、目的関数を最大(もしくは最小)にするものを最適解という。
そして、最適解はかならず図形の頂点のどこかだ。
(この場合、点O, A, B, C, Dの頂点のうち、頂点Bだった)
Z=3x1+5x2
C
B
A
D
O
最適解
じゃあ、5つの点だけ
調べればいいのね!
x1
x2
20
星野さんの「うれしさ」つまり目的関数Zの値を、各点について示そう。
この場合は2次元だし、制約条件も少ないので、すべての頂点について目的関数、つまりZの値を調べられた。
しかしもっと問題が大きくなると、すべての頂点はとても調べきれない。
どうすればいいの?
C
B
A
D
O
142.5
120
100 132
0x1
x2
21
ここで線形計画法のありがたいところは、
(1)原点から出発し(2)Zの値が大きくなるような頂点に移動し、(3)数が大きくなる方向がなければ終了
…すれば、必ず最適解にたどりつくということだ。
C
B
A
D
O
142.5
120
100 1322手かかったわね。
0x1
x2
22
しつこく繰り返すが…線形計画法のありがたいところは、
(1)原点から出発し(2)Zの値が大きくなるような頂点に移動し、(3)数が大きくなる方向がなければ終了
という手順さえ守れば、
どんなに下手な道の選び方をしても、いつかは必ず最適解にたどりつく、ということだ。
こんどは3手。
でもたどりついた!
C
B
A
D
O
142.5
120
100 132
0x1
x2
23
この性質を利用したものが単体法、
もしくはシンプレックス法というものだ。これで線形計画法を簡単に解くことができる。
だが話が長くなるから、ここでいったん、休憩にしよう。
やっと終わったぜ。
はーい!
あ、コーヒーだ!
24
七瀬
だますみたいで先生に悪い…とは思ったのですが、仲の悪かったA組とB組が、こんな悪だくみで盛り上がるなんて、
数か月前には考えられなかったことだったんです。ひさしぶりに楽しいランチタイムでした。
これで第5話は終わりです。ありがとうございました。
クーラーが
ききすぎよ。
このコーヒー、
まずーい。
CDの趣味、最悪だぜ。ロックにしなよ。
インスタントだって!
豆の買い置きくらい
しておきなさい!
あ、ホントだ。
まだまだDEAには遠そうですね!
ごみ箱どこですか?え、このバケツ?
この電話、かけていーい?あれー、つながんなーい。
おやつは
ないんですね・・・。
資料もいっぱいー。
ほかの人たちは
こないんですか?
25
泉恵女学園物語・その6
おはなしDEA(包絡分析法)- スラック変数・基底変換-
ライオネル学園大学
せん けい
楽しいランチタイムも、
あっという間に終わり…まーかせて。
予習したんだから!
永倉七瀬
26
それでは単体法の準備を続けよう。
眠いだろうが、しっかり聞いててくれよ!
はーい!
こうして午後の授業は始まりました。
うぃーす
七瀬
27
1 百円
2 時間
3 気力
読書
7 百円
4 時間
2 気力
買い物
うれしさ
3うれしさ
5
140 百円
100 時間
120 気力
総量
制約条件
お金の制約: x1+7x2 ≦140 百円時間の制約: 2x1+4x2 ≦100 時間気力の制約: 3x1+2x2 ≦120 気力
非負条件
x1≧0x2≧0
Z=3x1+5x2
目的関数
まず「夏休み問題」の復習だ。これは3つの制約条件、2つの非負条件のもとで、目的関数を最大にする問題だった。
40 50 140
60
2520
28
制約条件
お金の制約: x1+7x2 ≦140 百円時間の制約: 2x1+4x2 ≦100 時間気力の制約: 3x1+2x2 ≦120 気力
非負条件
x1≧0x2≧0
Z=3x1+5x2
目的関数
ここで不等号をなくすため、λ1, λ2, λ3を導入して等式にする。
これらをスラック変数という。スラック変数は、
資源の使い残し量を示す。
新・制約条件
お金の制約: x1+7x2 +λ1 = 140 百円時間の制約: 2x1+4x2 +λ2 = 100 時間気力の制約: 3x1+2x2 +λ3 = 120 気力
スラック変数
スラックって、
英語の「余裕」のことよ。
沢渡
29
読書を35回、買い物を7.5回やると、
どの資源をどれくらい使ったかがわかる。
星野くんの場合、
時間と気力の2資源を使い切っている。
お金ばっかり、
ずいぶん
余っちゃったなぁー。
1 百円2 時間3 気力
読書
7 百円4 時間2 気力
買い物
140 百円100 時間120 気力
総量
35回 7.5回
35 百円70 時間
105 気力
読書
52.5 百円30 時間15 気力
買い物
87.5 百円100 時間120 気力
使用量
× ×
= =
-
=
52.5 百円0 時間0 気力
余り
=+
たとえば点Bの使いのこしは、お金=52.5百円、時間、気力は0だった。
ゆえにλ1 =52.5, λ2 =0, λ3 =0。他の4つの頂点についても求めよう。
C
B
A
D
O 120
100 132
0
30
すると次の表のようになる。面白いのは、どの行(ヨコのライン)にも、かならず0が2つ、入っていることだ。
どうして?
C
B
A
D
O
142.5
120
100 132
0
頂点 x1 x2 λ1 λ2 λ3 ZO 0 0 140 100 120 0A 40 0 100 20 0 120B 35 7.5 52.5 0 0 143C 14 18 0 0 42 132D 0 20 0 20 80 100
沢渡
31
その理由の直感的な説明は…いま式が3本あり、変数は5つある。
ゆえにどれか2つの変数を消去(0を代入する)しても、解が求まるからなんだ。
ふーん…
C
B
A
D
O
142.5
120
100 132
0
頂点 x1 x2 λ1 λ2 λ3 ZO 0 0 140 100 120 0A 40 0 100 20 0 120B 35 7.5 52.5 0 0 143C 14 18 0 0 42 132D 0 20 0 20 80 100
新・制約条件
お金の制約: x1+7x2 +λ1 = 140 百円時間の制約: 2x1+4x2 +λ2 = 100 時間気力の制約: 3x1+2x2 +λ3 = 120 気力
たとえばλ2, λ3を隠しても3変数に式3本なので答えは求まります。これこそ点Bの解よ。
永倉沢渡
32
どの頂点も、2つの直線の交点だ。そして0になるのは、その2直線の示す条件が持つスラック変数だ。
たとえば点Cは、(1)お金の制約と(2)時間の制約の交点。だからλ1 とλ2が0になった。
ほんとだ…
頂点 x1 x2 λ1 λ2 λ3 ZO 0 0 140 100 120 0A 40 0 100 20 0 120B 35 7.5 52.5 0 0 143C 14 18 0 0 42 132D 0 20 0 20 80 100
40 50 140
60
2520
C
お金の余り
時間の余り
気力の余り
お金の制約式
時間の制約式
新・制約条件(1)お金の制約: x1+7x2 +λ1 = 140 百円(2)時間の制約: 2x1+4x2 +λ2 = 100 時間(3)気力の制約: 3x1+2x2 +λ3 = 120 気力
沢渡
33
より一般的に言えば、次になる。
変数をn個、制約条件の式をm本とする。
実行可能領域の頂点ならば、対応する変数(n+m)個のうち、少なくともn個が0になる。
ふーん…頂点 x1 x2 λ1 λ2 λ3 ZO 0 0 140 100 120 0A 40 0 100 20 0 120B 35 7.5 52.5 0 0 143C 14 18 0 0 42 132D 0 20 0 20 80 100
お金の余り
時間の余り
気力の余り
新・制約条件(1)お金の制約: x1+7x2 +λ1 = 140 百円(2)時間の制約: 2x1+4x2 +λ2 = 100 時間(3)気力の制約: 3x1+2x2 +λ3 = 120 気力
m個n個
沢渡
34
いよいよ単体法の説明に入る…前に、もうひとがんばり。
「基底形式」 「基底変数」 「非基底変数」「基底解」 「基底変換」
という専門言葉を覚えて欲しい。
ふぁーい
バリエーションのない
学問だぜ!
35
基底形式
お金の制約: x1+7x2 +λ1 = 140 百円時間の制約: 2x1+4x2 +λ2 = 100 時間気力の制約: 3x1+2x2 +λ3 = 120 気力
制約条件の不等式を、
λで等式に書き直したものを「基底形式」といい、λのことを 「基底変数」という。
基底変数以外の変数を、非基底変数という。x1,x2のことだ。
基底変数非基底変数「基底解」と
「基底変換」は?
安達
36
非基底変数、つまりx1,x2の値をすべて0にすれば、基底変数λ1,λ2,λ3の値はあっという間に求まる。
(x1=x2=0, λ1=140,λ2=100,λ3=120)
こうして得られた解を 「基底解」というんだ。
基底形式
お金の制約: x1+7x2 +λ1 = 140 百円時間の制約: 2x1+4x2 +λ2 = 100 時間気力の制約: 3x1+2x2 +λ3 = 120 気力
基底変数非基底変数
このくらいの方程式なら
あなたも解けるでしょ?馬鹿にしやがって!
星野 松岡
37
また基底変数をいろいろ取り替えることができる。
たとえばx1を消去してみよう。(1)式を2倍して(2)から引く。(1)式を3倍して(3)から引く。
すると次のようになる。
基底形式
お金の制約: x1+7x2 +λ1 = 140 ……(1)時間の制約: 2x1+4x2 +λ2 = 100 ……(2)気力の制約: 3x1+2x2 +λ3 = 120 ……(3)
基底形式
お金の制約: x1 + 7x2 + λ1 = 140 ……(1)時間の制約: -10x2 - 2λ1 +λ2 = -180 ……(2)気力の制約: -19x2 - 3λ1 +λ3 = -300 ……(3)
お金の制約: λ1 + 7x2 + x1 = 140 ……(1)時間の制約: - 2λ1 -10x2 +λ2 = -180 ……(2)気力の制約: - 3λ1 -19x2 +λ3 = -300 ……(3)
順番を入れかえると
基底変数を取りかえた ことがはっきりするでしょ。
λ1とx1を入れかえたの。
x1を消去して
順序を入れかえて
これも基底形式になってる! やるわね。
永倉
遠藤
38
この基底変数の取り替えが
基底変換 なんだ。
基底形式
お金の制約: x1 + 7x2 +λ1 = 140 ……(1)時間の制約: 2x1 + 4x2 +λ2 = 100 ……(2)気力の制約: 3x1 + 2x2 +λ3 = 120 ……(3)
お金の制約: λ1 + 7x2 + x1 = 140 ……(1)時間の制約: - 2λ1 -10x2 +λ2 = -180 ……(2)気力の制約: - 3λ1 -19x2 +λ3 = -300 ……(3)
基底変数は λ1 ,λ2 ,λ3
基底変数は x1 ,λ2 ,λ3
基底変換 の結果を、いつも基底形式 に直すのはたいへん!
もっと便利な表記法がありそうでしょ?それが単体表 なの!
シンプレックス・タブローともいうの。
タブローって、表っていう意味のフランス語よ。語尾を下げて発音すると、どんな言葉もフランス語風に聞こえるわ。
永倉
39
永倉くん、よく知ってるねえ。
まーかせて。数学だけはプロだから。
まず最初の表を単体表にすると、こうなります。
基底形式
お金の制約: x1 + 7x2 +λ1 = 140 ……(1)時間の制約: 2x1 + 4x2 +λ2 = 100 ……(2)気力の制約: 3x1 + 2x2 +λ3 = 120 ……(3)
式の番号
ステップ
基底変数
基底変数の値
変数
x1 x2 λ1 λ2 λ3
Ⅰ(1)(2)(3)
λ1λ2λ3
140100120
1 7 1 0 02 4 0 1 03 2 0 0 1
基底変数に入ってない
変数の値はつねに0ってことに注意してね!
だから x1=x2=0 なの。
x1,x2は基底変数ではないでしょ?
永倉
40
基底変換 はどうやるか言えるかい?
もちろん。さっきやったように、x1を消去してみます。
すると単体表では、次のような表記法になります。
式の番号
ステップ
基底変数
基底変数の値
変数
x1 x2 λ1 λ2 λ3
Ⅰ(1)(2)(3)
λ1λ2λ3
140100120
1 7 1 0 02 4 0 1 03 2 0 0 1
式の番号
ステップ
基底変数
基底変数の値
変数
x1 x2 λ1 λ2 λ3
Ⅱ(4)(5)(6)
x1λ2λ3
140-180-300
1 7 1 0 00 -10 -2 1 00 -19 -3 0 1
お金の制約: x1 + 7x2 +λ1 = 140 ……(1)時間の制約: 2x1 + 4x2 +λ2 = 100 ……(2)気力の制約: 3x1 + 2x2 +λ3 = 120 ……(3)
ステップⅠ
お金の制約: x1 + 7x2 + λ1 = 140 …(1)時間の制約: -10x2 - 2λ1 +λ2 = -180 …(2)気力の制約: -19x2 - 3λ1 +λ3 = -300 …(3)
ステップⅡ
この丸は
何ですか?
永倉
杉原
41
丸について詳しく説明すると…いまx1を追い出そうと決めたので、タテの列が決まります。
式の番号
ステップ
基底変数
基底変数の値
変数
x1 x2 λ1 λ2 λ3
Ⅰ(1)(2)(3)
λ1λ2λ3
140100120
1 7 1 0 02 4 0 1 03 2 0 0 1
式の番号
ステップ
基底変数
基底変数の値
変数
x1 x2 λ1 λ2 λ3
Ⅰ(1)(2)(3)
λ1λ2λ3
140100120
1 7 1 0 02 4 0 1 03 2 0 0 1
どの行を基本にして、他の行から引くか決めたので、(この場合は第1行)、ヨコの行が決まります。
それで?
永倉
杉原
42
この2つの「輪」は、しばしば1つの図に同時に書き込みます。すると次の図になります。
式の番号
ステップ
基底変数
基底変数の値
変数
x1 x2 λ1 λ2 λ3
Ⅰ(1)(2)(3)
λ1λ2λ3
140100120
1 7 1 0 02 4 0 1 03 2 0 0 1
式の番号
ステップ
基底変数
基底変数の値
変数
x1 x2 λ1 λ2 λ3
Ⅰ(1)(2)(3)
λ1λ2λ3
140100120
1 7 1 0 02 4 0 1 03 2 0 0 1
もっと省略して、たんに1つの数字をマルで囲んだのが、さっきの丸だったんです。杉原さん、わかった?これがもっとも普通の書き方なので、はやく慣れてください。
了解!
この丸のついた場所を、ピボットといいます。
バスケットボールに、「ピボットフット」という言葉があります。
動かしてはいけない軸足のことです。
永倉
杉原
43
初期状態(原点)からの最初の一手(基底変換)は、
「6通りしかない」ってこと、わかりますか?
式の番号
ステップ
基底変数
基底変数の値
変数
x1 x2 λ1 λ2 λ3
Ⅰ(1)(2)(3)
λ1λ2λ3
140100120
1 7 1 0 0 2 4 0 1 0 3 2 0 0 1
ここの9つには丸をつけてはいけないんですか?
永倉
杉原
つけてはいけない。丸をつけるのは、
「その列の変数を基底変数に組み入れたい」からだろ?
ところがλ1, λ2, λ3は、すでに基底変数だからだ。
44
だから原点からの最初の基底変換は、
6通りしかないの。
式の番号
ステップ
基底変数
基底変数の値
変数
x1 x2 λ1 λ2 λ3
Ⅰ(1)(2)(3)
λ1λ2λ3
140100120
1 7 1 0 0 2 4 0 1 0 3 2 0 0 1
わかりました。
40 50
140
60
25
20
図で描くと次の6通りだ。
永倉
杉原
45
もう少し詳しく調べてみましょう。どこに黒丸をつけると、どの矢印になるのでしょうか?
式の番号
ステップ
基底変数
基底変数の値
変数
x1 x2 λ1 λ2 λ3
Ⅰ(1)(2)(3)
λ1λ2λ3
140100120
1 7 1 0 0 2 4 0 1 0 3 2 0 0 1
x1の列に丸をつけることは、
今まで非基底変数だったx1を基底変数に組み入れることです。つまり、今までx1は0だったのに、0より大きくなるんですよね…。
x1=0が0以上になるんだから、
上の3つの丸は、それぞれ下の3つの矢印のどれかです。
40 50
140
x1
x2
永倉
杉原
46
上から3番目に丸をつけたら?
式の番号
ステップ
基底変数
基底変数の値
変数
x1 x2 λ1 λ2 λ3
Ⅰ(1)(2)(3)
λ1λ2λ3
140100120
1 7 1 0 0 2 4 0 1 0 3 2 0 0 1
第3行に丸をつけると、第3行が基準になります。
ですから第3行を3で割って、x1の値を1にします。
すると、基底変数の値は40になります。ということは…この矢印?
40 50
140
60
25
20
式の番号
ステップ
基底変数
基底変数の値
変数
x1 x2 λ1 λ2 λ3
Ⅰ(1)(2)(3)
λ1λ2λ3
14010040
1 7 1 0 02 4 0 1 01 2/3 0 0 1/3
x1
x2
正解!
永倉
杉原
47
この表の読み方はわかるかい?
丸を説明していたら、ずいぶん話がそれてしまいました。元に戻りましょう。今、単体表のステップⅡまでを説明したのでした。
式の番号
ステップ
基底変数
基底変数の値
変数
x1 x2 λ1 λ2 λ3
Ⅰ(1)(2)(3)
λ1λ2λ3
140100120
1 7 1 0 02 4 0 1 03 2 0 0 1
式の番号
ステップ
基底変数
基底変数の値
変数
x1 x2 λ1 λ2 λ3
Ⅱ(4)(5)(6)
x1λ2λ3
140100120
1 7 1 0 00 -10 -2 1 00 -19 -3 0 1
まるっきり!
永倉
松岡
48
この表の意味を知るために、基底解を求めてみましょう。ステップ1では、すべての資源が余っています。ステップ2では、x1=140。でもλ2とλ3はマイナス、
これでは資源が不足してしまいます。
式の番号
ステップ
基底変数
基底変数の値
変数
x1 x2 λ1 λ2 λ3
Ⅰ(1)(2)(3)
λ1λ2λ3
140100120
1 7 1 0 02 4 0 1 03 2 0 0 1
式の番号
ステップ
基底変数
基底変数の値
変数
x1 x2 λ1 λ2 λ3
Ⅱ(4)(5)(6)
x1λ2λ3
140-180-300
1 7 1 0 00 -10 -2 1 00 -19 -3 0 1
お金の制約: x1 + 7x2 +λ1 = 140 ……(1)時間の制約: 2x1 + 4x2 +λ2 = 100 ……(2)気力の制約: 3x1 + 2x2 +λ3 = 120 ……(3)
ステップⅠ
お金の制約: λ1 + 7x2 + x1 = 140 ……(1)時間の制約: - 2λ1 -10x2 +λ2 = -180 ……(2)気力の制約: - 3λ1 -19x2 +λ3 = -300 ……(3)
ステップⅡ
これはグラフでいうと、どこからどこに移動したか、わかるかな?
永倉
49
実はこの基底変換は、下の矢印だったんだね!x1が0から140に増えてるだろ?
40 50 140
60
2520
ステップⅠ
ステップⅡ
x1
x2
式の番号
ステップ
基底変数
基底変数の値
変数
x1 x2 λ1 λ2 λ3
Ⅰ(1)(2)(3)
λ1λ2λ3
140100120
1 7 1 0 0 2 4 0 1 0 3 2 0 0 1
式の番号
ステップ
基底変数
基底変数の値
変数
x1 x2 λ1 λ2 λ3
Ⅱ(4)(5)(6)
x1λ2λ3
140-180-300
1 7 1 0 0 0 -10 -2 1 0 0 -19 -3 0 1
お金の制約: x1 + 7x2 +λ1 = 140 ……(1)時間の制約: 2x1 + 4x2 +λ2 = 100 ……(2)気力の制約: 3x1 + 2x2 +λ3 = 120 ……(3)
ステップⅠ
お金の制約: λ1 + 7x2 + x1 = 140 ……(1)時間の制約: - 2λ1 -10x2 +λ2 = -180 ……(2)気力の制約: - 3λ1 -19x2 +λ3 = -300 ……(3)
ステップⅡ
50
ステップⅡの意味を知ろう。x1が140でx2が0…ということは、
40 50 140
60
2520
ステップⅡ
x1
x2
趣味は「読書」しかない、と考えて、しかも制約は金銭だけ、と考えれば、読書は140回できる、ってことね!
1 百円
2 時間
3 気力
読書
7 百円
4 時間
2 気力
買い物
140 百円
100 時間
120 気力
総量
そのとおり!ところが現実には、読書は140回もできない。
1回2時間かかるが100時間しかないから50回以下。気力が3必要だが、120気力しかないから40回以下…ってことなんだ。
式の番号
ステップ
基底変数
基底変数の値
変数
x1 x2 λ1 λ2 λ3
Ⅱ(4)(5)(6)
x1λ2λ3
140-180-300
1 7 1 0 0 0 -10 -2 1 0 0 -19 -3 0 1
51
ゆえにステップⅡは、現実には実行不可能だ。だからステップⅡの点は、
実行可能領域ではない(色が塗られていない)んだね。
40 50 140
60
2520
ステップⅡ
x1
x2
52
つまり基底変換は、やみくもに行ってはいけない。でないと、実行可能領域からはみ出してしまうからだ。
だって先生、さっきは、「どんなに下手な頂点の選び方をしても、かならず最適解にたどりつく」
って言ってたじゃない。
すまない。さっきの説明は舌足らずだった。
どんなに下手な実行可能領域 の
頂点の選び方をしても、と言うべきだったね。
どんな基底変換をしても自動的に実行可能領域の頂点に行くのではない、ということには、十分、注意してもらいたい。
じゃあ先生、
なんだい? 遠藤くん。
遠藤
森井
53
原点からの最初の6通りの基底変換のうち、
どれを選べばいいの?
選んでいいのは、左の図でいえば、
実行可能解に行く2つの矢印だけだ。右の表で言えば、2つの丸だけが許される。
式の番号
ステップ
基底変数
基底変数の値
変数
x1 x2 λ1 λ2 λ3
Ⅰ(1)(2)(3)
λ1λ2λ3
140100120
1 7 1 0 0 2 4 0 1 0 3 2 0 0 1
式の番号
ステップ
基底変数
基底変数の値
変数
x1 x2 λ1 λ2 λ3
Ⅰ(1)(2)(3)
λ1λ2λ3
140100120
1 7 1 0 0 2 4 0 1 0 3 2 0 0 1
遠藤
40
50
140
60
25
20
54
どの順で基底変換すべきか、組織的に教える方法…それこそ単体法なんだ。
それでは、やっと単体法の説明に入れるぞ!
先生、ちょうど3時です。ちょっとお茶にしましょうよ!
待ってたぜ!
依存ありませんわ。
綾崎
松岡
安達
55
「恵泉女学園物語・その6」はここで終了です。つきあってくれて、ありがとう。みなさんもお茶で一服したら?
単体法って、実は手順だけなら一瞬なんです。でも、みんなで意味をじっくり考えながら学ぶのは、高校ではめったにない体験で、すごく新鮮でした。
よく「大学の勉強は役に立たない」って聞きます。そうかもしれません。でも、「本当に勉強をした」っていう体験は、きっと…
なにしてんの?お茶、お茶!
呼ばれちゃった。じゃ、またね!
永倉
56
泉恵女学園物語・その7
おはなしDEA(包絡分析法)- 単体法-
せん けい
コーヒータイムが終わりました。
かき氷、とてもおいしかったです。
永倉
57
かき氷はおいしかったかな?それでは勉強をはじめよう。
はーい
これからコーヒータイム後の授業!
やっと単体法に入れそうです。
気合いれてこーぜ!
山本
58
それでは「夏休み問題」を単体法で解こう。
6種類の基底変換のうち、実行可能領域におさまる、いわば許される基底変換は、下の2つだった。そこで疑問が産まれる…。
1)どれが許される基底変換かを見分ける方法は?
(6つのうち2つしか許されないのはなぜか?)
2)許される基底変換のうちどれを選べばいいのか?(2つのうち、どちらを選べばいいのか?)
遠藤
6つのうち2つしか許されないのはなぜ?
保坂
最初の一手はどっち?
式の番号
ステップ
基底変数
基底変数の値
変数
x1 x2 λ1 λ2 λ3
Ⅰ(1)(2)(3)
λ1λ2λ3
140100120
1 7 1 0 0 2 4 0 1 0 3 2 0 0 1
疑問1
疑問2
40 50 140
60
2520
x1
x2
59
それを知るために単体表を描こう。じつは今までの表はニセモノ…なんちゃって単体表 だったのだ!
式の番号
ステップ
基底変数
基底変数の値
変数
x1 x2 λ1 λ2 λ3
Ⅰ(1)(2)(3)
λ1λ2λ3
140100120
1 7 1 0 02 4 0 1 03 2 0 0 1
永倉
式の番号
ステップ
基底変数
基底変数の値
変数
Z x1 x2 λ1 λ2 λ3
Ⅰ
(1)
(2)(3)(4)
λ1λ2λ3
140100120
0 1 7 1 0 00 2 4 0 1 00 3 2 0 0 1
1 -3 -5 0 0 0
増加臨界θi
0Z140/7=20100/4=25120/2=60
説明
なんちゃって単体表
本当の単体表
本当の単体表は下なの。今までの表と大きな違いは
(1)基底変数の欄に Z が入ってること。(2)変数の欄にも Z が入ってること。(3)増加臨界の欄が加わったこと。
「説明」の欄もついてるけど、これはあんまり関係ないわ。
60
Zの欄には何を入れればいいのだろうか?
目的関数は Z=3x1+5x2。それを変形して 0 = Z -3x1 -5x2。よってZの欄には0、変数の欄には 1, -3, -5, 0, 0, 0 を入れる。
永倉
式の番号
ステップ
基底変数
基底変数の値
変数
Z x1 x2 λ1 λ2 λ3
Ⅰ
(1)
(2)(3)(4)
λ1λ2λ3
140100120
0 1 7 1 0 00 2 4 0 1 00 3 2 0 0 1
1 -3 -5 0 0 0
増加臨界θi
0Z140/7=20100/4=25120/2=60
説明
本当の単体表
この状態の意味は、x1=x2=0 のとき Z=0。つまり読書も買い物も0回で、うれしさも0ってこと。
山本
増加臨界の欄はどうやって埋めるの?
61
いま目的関数Zの欄には 1 -3 -5 0 0 0 が入っている。
書き直せば Z=3x1+5x2。で、今のところ x1, x2 はどちらも0だ。
基底変換して基底変数に組み入れれば、
x1も x2も 0より大きい正の値になる。
つまり、ここにマイナスがある限り、基底変換で解を改善できるんだ。
永倉
式の番号
ステップ
基底変数
基底変数の値
変数
Z x1 x2 λ1 λ2 λ3
Ⅰ
(1)
(2)(3)(4)
λ1λ2λ3
140100120
0 1 7 1 0 00 2 4 0 1 00 3 2 0 0 1
1 -3 -5 0 0 0
増加臨界θi
0Z140/7=20100/4=25120/2=60
説明
本当の単体表
ここの説明、すごく大事だから、わからなかったらじっくり復習してね!
山本
あの…増加臨界の欄の話は?
62
さて、Zの欄には-3,-5という2つのマイナスがある。
これは目的関数が Z=3x1+5x2 という意味だった。
x1を1つ増やすとZが3つ増え、x2を1つ増やすとZが5つ増える。
だから x1 と x2 を増やすチャンスがあるのなら、より係数の大きなx2の方を増やしたほうが賢い。
だからx1,x2のうち、まず基底変換すべきなのは x2 なんだね!
永倉
式の番号
ステップ
基底変数
基底変数の値
変数
Z x1 x2 λ1 λ2 λ3
Ⅰ
(1)
(2)(3)(4)
λ1λ2λ3
140100120
0 1 7 1 0 00 2 4 0 1 00 3 2 0 0 1
1 -3 -5 0 0 0
増加臨界θi
0Z140/7=20100/4=25120/2=60
説明
本当の単体表
山本さん、もう少しだからガマンして!
山本
私は忘れられてしまったの?
63
基底変換すべきはx2とわかった。
さて、x2はどこまで増やせるだろうか?これが「増加臨界」という意味だ。
結論から言えば、「基底変数の値」を「変数」の値で割った値を計算し、
それらのうち、いちばん少ない値までは x2 を増やせる。
本当の単体表
式の番号
ステップ
基底変数
基底変数の値
変数
Z x1 x2 λ1 λ2 λ3
Ⅰ
(1)
(2)(3)(4)
λ1λ2λ3
140100120
0 1 7 1 0 00 2 4 0 1 00 3 2 0 0 1
1 -3 -5 0 0 0
増加臨界θi
0Z140/7 = 20100/4 = 25120/2 = 60
説明
最小の
値を選ぶ
60
2520
x1
x2
永倉
図で言えば、これら3つの矢印のうち最小値の20を選んだ、ってことなの!
これが増加臨界の欄の説明よ。わかった?
山本
はい
64
よって、最初の一手のピボットは、x2,λ1の交点なんだ。
これで最初の2つの疑問…1)どれが許される基底変換か?
(Zの欄がマイナスで、かつ増加臨界が最小)
2)どれを選べばいいか?(Zの欄のマイナスが最大で、かつ増加臨界が最小)
に答えたことになる。
本当の単体表
式の番号
ステップ
基底変数
基底変数の値
変数
Z x1 x2 λ1 λ2 λ3
Ⅰ
(1)
(2)(3)(4)
λ1λ2λ3
140100120
0 1 7 1 0 00 2 4 0 1 00 3 2 0 0 1
1 -3 -5 0 0 0
増加臨界θi
0Z140/7 = 20100/4 = 25120/2 = 60
説明
最小の
値を選ぶ
永倉
右の図で言えば、6つの矢印のうち2つしか許されず、しかも↑を選ぶべき、ってことよ!
x1
65
それでは単体表でステップⅡまで 行ってみよう。
永倉
なんで灰色の欄に、100 1 -16/7 0 5/7 0 0が入ってるかわかる?
ピボット行の-5倍を引いたから!
式の番号
ステップ
基底変数
基底変数の値
変数
Z x1 x2 λ1 λ2 λ3増加臨界θi 説明
Ⅰ
(1)
(2)(3)(4)
λ1λ2λ3
140100120
0 1 7 1 0 00 2 4 0 1 00 3 2 0 0 1
1 -3 -5 0 0 00Z140/7 = 20100/4 = 25120/2 = 60
Ⅱ
(5)
(6)(7)(8)
x2λ2λ3
202080
0 1/7 1 1/7 0 00 10/7 0 -4/7 1 00 19/7 0 -2/7 0 1
1 -16/7 0 5/7 0 0100Z (1)-(6)*(-5)
(2) / 7(3) - (6)×4(4) - (6)×2
D C
B
AO
100
0x1
x2グラフでいうと次の一手を進んだんだ。
ピボット行
最小なのでピボット行が第1行になった
66
それではステップⅢまで 行ってみよう。
永倉
式の番号
ステップ
基底変数
基底変数の値
変数
Z x1 x2 λ1 λ2 λ3増加臨界θi 説明
Ⅰ
(1)
(2)(3)(4)
λ1λ2λ3
140100120
0 1 7 1 0 00 2 4 0 1 00 3 2 0 0 1
1 -3 -5 0 0 00Z140/7 = 20100/4 = 25120/2 = 60
Ⅱ
(5)
(6)(7)(8)
x2λ2λ3
202080
0 1/7 1 1/7 0 00 10/7 0 -4/7 1 00 19/7 0 -2/7 0 1
1 -16/7 0 5/7 0 0100Z
20*7 =14020* 7/10 = 1480* 7/19≒ 30
(1)-(6)*(-5)
(2) / (7)(3) - (6)*4(4) - (6)*2
ピボット行
最小なのでピボット行が第2行になった
Ⅲ
(9)
(10)(11)(12)
x2λ2λ3
181442
0 0 1 1/5 -1/10 00 1 0 -2/5 7/10 00 0 0 4/5 -19/10 1
1 0 0 -1/5 8/5 0132Z (5)-(11)*(-16/7)
(6) - (11)*(1/7)(7) / (10/7)(8) - (11)*(19/7)
最小のマイナスなのでピボット列が第2列になった
C
B
AO
100
0x1
x2
132
67
ステップⅣ。もう灰色の欄にマイナスがない。つまりこれ以上、改善する余地がない。
したがって終了だ。
永倉
C
B
AO
100
0x1
x2
132
142.5
式の番号
ステップ
基底変数
基底変数の値
変数
Z x1 x2 λ1 λ2 λ3増加臨界θi 説明
Ⅰ
(1)
(2)(3)(4)
λ1λ2λ3
140100120
0 1 7 1 0 00 2 4 0 1 00 3 2 0 0 1
1 -3 -5 0 0 00Z140/7 = 20100/4 = 25120/2 = 60
Ⅱ
(5)
(6)(7)(8)
x2λ2λ3
202080
0 1/7 1 1/7 0 00 10/7 0 -4/7 1 00 19/7 0 -2/7 0 1
1 -16/7 0 5/7 0 0100Z
20*7 =14020* 7/10 = 1480* 7/19≒ 30
(1)-(6)*(-5)
(2) / (7)(3) - (6)*4(4) - (6)*2
ピボット行
Ⅲ
(9)
(10)(11)(12)
x2λ2λ3
181442
0 0 1 1/5 -1/10 00 1 0 -2/5 7/10 00 0 0 4/5 -19/10 1
1 0 0 -1/5 8/5 0132Z18*5 = 90
42* 5/4 = 52.5
(5)-(11)*(-16/7)
(6) - (11)*(1/7)(7) / (10/7)(8) - (11)*(19/7)
Ⅳ
(13)
(14)(15)(16)
x2λ2λ3
7.535
52.5
0 0 1 0 3/8 -1/40 1 0 0 -1/4 1/20 0 0 1 -19/8 5/4
1 0 0 0 9/8 1/4142.5Z (9)-(16)*(-1/5)
(10) - (16)*(1/5)(11) - (16)* (-2/5)(12) / (4/5)
最小のマイナスなのでピボット列が第2列になった
最小なのでピボット行が第3行になった
お疲れさま!
68
これで単体法の説明は終わり。みんな、わかったかな?1回でわからなければ、何度も読み返そう!
それではテストだ!
ええーっ!
土曜日にテストなんて
追試以来だな!
ドキドキするぜ!
69
ある会社では2つの製品P1,P2を作って、それぞれ1kgあたり100千円と150千円で売っている。
製品P1を作るためには機械M1,M2,M3,M4を用いる。製品P2を作るためには機械M2,M3,M4を用いる。それぞれの製品を1kg作るために必要な機械の使用時間は以下の通りである。
また各機械の月間の、使用可能時間も示す。
売り上げを最大にするには、P1,P2の生産量を、それぞれどれだけにすればいいか、
単体法で解け。
製品1 製品2 利用可能時間
M1 2 0 90M2 3 3 150M3 1 3 120M4 3 4 180
売値 100 150
問1
どひー!まず定式化しなきゃ…。
森井
70
製品1 製品2 利用可能時間
M1 2 0 90M2 3 3 150M3 1 3 120M4 3 4 180
売値 100 150
ある会社では2つの製品P1,P2を作って、それぞれ1kgあたり100千円と150千円で売っている。製品P1を作るためには機械M1,M2,M3,M4を用いる。製品P2を作るためには機械M2,M3,M4を用いる。それぞれの製品を1kg作るために必要な機械の使用時間は以下の通りである。
また各機械の月間の、使用可能時間も示す。売り上げを最大にするには、P1,P2の生産量を、それぞれどれだけにすればいいか、
単体法で解け。
Z = x1 + x2
x1+ x2 +λ1 =
x1+ x2 +λ2 =
x1+ x2 +λ3 =
x1+ x2 +λ4 =
まず定式化してみます。空欄を埋めてみましょう。正解は次のページです。
森井
71
製品1 製品2 利用可能時間
M1 2 0 90M2 3 3 150M3 1 3 120M4 3 4 180
売値 100 150
ある会社では2つの製品P1,P2を作って、それぞれ1kgあたり100千円と150千円で売っている。製品P1を作るためには機械M1,M2,M3,M4を用いる。製品P2を作るためには機械M2,M3,M4を用いる。それぞれの製品を1kg作るために必要な機械の使用時間は以下の通りである。
また各機械の月間の、使用可能時間も示す。売り上げを最大にするには、P1,P2の生産量を、それぞれどれだけにすればいいか、
単体法で解け。
Z = 100x1 + 150x2
2x1+ 0x2 +λ1 = 90
3x1+ 3x2 +λ2 = 150
1x1+ 3x2 +λ3 = 120
3x1+ 4x2 +λ4 = 180
これが正解です。いよいよ次は単体表の作成!次のページを埋めてください。
森井
72
値 z x1 x2 λ1 λ2 λ3 λ4
z
λ1λ2λ3λ4
x1 x2 λ1 λ2 λ3 λ4
z
λ1λ2x2λ4
x1 x2 λ1 λ2 λ3 λ4
z
λ1λ2x2x1
製品1 製品2 利用可能時間
M1 2 0 90M2 3 3 150M3 1 3 120M4 3 4 180
売値 100 150
式の番号
ステップ
基底変数
基底変数の値
変数
Z x1 x2 λ1 λ2 λ3 増加限界θi 説明
Ⅰ
(1)
(2)(3)(4)
λ1λ2λ3
140100120
0 1 7 1 0 0 0 2 4 0 1 0 0 3 2 0 0 1
1 -3 -5 0 0 0 0 Z 140/7 = 20100/4 = 25120/2 = 60
Ⅱ
(5)
(6)(7)(8)
x2λ2λ3
202080
0 1/7 1 1/7 0 0 0 10/7 0 -4/7 1 0 0 19/7 0 -2/7 0 1
1 -16/7 0 5/7 0 0 100 Z (1)-(6)*(-5)
(2) / (7)(3) - (6)*4(4) - (6)*2
最小なのでピボット行が第1行になった
最小のマイナスなのでピボット列が第2列になった
大サービス! 参考に「夏休み問題」の表を途中まで見せてあげる。これを参考にがんばって埋めて! 3ステップで終わるわ。
正解は次のページよ!森井
73
値 z x1 x2 λ1 λ2 λ3 λ4
z 0 1 -100 -150 0 0 0 0
λ1 90 0 2 0 1 0 0 0 -λ2 150 0 3 3 0 1 0 0 50λ3 120 0 1 3 0 0 1 0 40λ4 180 0 3 4 0 0 0 1 45
x1 x2 λ1 λ2 λ3 λ4
z 6000 1 -50 0 0 0 50 0
λ1 90 0 2 0 1 0 0 0 45λ2 30 0 2 0 0 1 -1 0 15x2 40 0 0.333333 1 0 0 0.333333 0 120λ4 20 0 1.66667 0 0 0 -1.33333 1 12
x1 x2 λ1 λ2 λ3 λ4
z 6600 1 0 0 0 0 10 30
λ1 66 0 0 0 1 0 1.6 -1.2λ2 6 0 0 0 0 1 0.6 -1.2x2 36 0 0 1 0 0 0.6 -0.2x1 12 0 1 0 0 0 -0.8 0.6
事情が許すなら、Excelを使うとずっとラクよ!
杉原
森井
これが正解…らしいです。
正解はx1=12, x2=36。そのとき目的関数Zの値は6600。資源は機械M1は66時間,機械M2は6時間、余るということさ。
74
ある会社では2つの製品P1,P2を作って、それぞれ1kgあたり100千円と150千円で売っている。
製品P1を作るためには機械M1,M2,M3,M4を用いる。製品P2を作るためには機械M2,M3,M4を用いる。それぞれの製品を1kg作るために必要な機械の使用時間は以下の通りである。
また各機械の月間の、使用可能時間も示す。
生産量を最大にするには、P1,P2の生産量を、それぞれどれだけにすればいいか、
単体法で解け。
問2
生産量って、x1+x2 のことよね。
だから売値がそれぞれ1円と思えばいいの。すると定式化は…。
森井
製品1 製品2 利用可能時間
M1 2 0 90M2 3 3 150M3 1 3 120M4 3 4 180
売値 1 1
問1をちょっとだけ変えて問2だ!
75
ある会社では2つの製品P1,P2を作って、それぞれ1kgあたり100千円と150千円で売っている。製品P1を作るためには機械M1,M2,M3,M4を用いる。製品P2を作るためには機械M2,M3,M4を用いる。それぞれの製品を1kg作るために必要な機械の使用時間は以下の通りである。
また各機械の月間の、使用可能時間も示す。
生産量を最大にするには、P1,P2の生産量を、それぞれどれだけにすればいいか、
単体法で解け。
空欄を埋めてみましょう。正解は次のページです。
森井
Z = x1 + x2
x1+ x2 +λ1 =
x1+ x2 +λ2 =
x1+ x2 +λ3 =
x1+ x2 +λ4 =
製品1 製品2 利用可能時間
M1 2 0 90M2 3 3 150M3 1 3 120M4 3 4 180
生産量 1 1
76
これが正解です。やさしすぎた?でも単体表の作成は、けっこうホネよ!それでは、次のページを埋めてください。
森井
Z = 1x1 + 1x2
2x1+ 0x2 +λ1 = 90
3x1+ 3x2 +λ2 = 150
1x1+ 3x2 +λ3 = 120
3x1+ 4x2 +λ4 = 180
製品1 製品2 利用可能時間
M1 2 0 90M2 3 3 150M3 1 3 120M4 3 4 180
生産量 1 1
ある会社では2つの製品P1,P2を作って、それぞれ1kgあたり100千円と150千円で売っている。製品P1を作るためには機械M1,M2,M3,M4を用いる。製品P2を作るためには機械M2,M3,M4を用いる。それぞれの製品を1kg作るために必要な機械の使用時間は以下の通りである。
また各機械の月間の、使用可能時間も示す。
生産量を最大にするには、P1,P2の生産量を、それぞれどれだけにすればいいか、
単体法で解け。
77
問1の正解を見せてあげる!今度も3ステップで終わるわ。
森井
値 z x1 x2 λ1 λ2 λ3 λ4
z 0 1 -100 -150 0 0 0 0
λ1 90 0 2 0 1 0 0 0 -λ2 150 0 3 3 0 1 0 0 50λ3 120 0 1 3 0 0 1 0 40λ4 180 0 3 4 0 0 0 1 45
x1 x2 λ1 λ2 λ3 λ4
z 6000 1 -50 0 0 0 50 0λ1 90 0 2 0 1 0 0 0 45λ2 30 0 2 0 0 1 -1 0 15x2 40 0 0.333333 1 0 0 0.333333 0 120λ4 20 0 1.66667 0 0 0 -1.33333 1 12
x1 x2 λ1 λ2 λ3 λ4z 6600 1 0 0 0 0 10 30
λ1 66 0 0 0 1 0 1.6 -1.2λ2 6 0 0 0 0 1 0.6 -1.2x2 36 0 0 1 0 0 0.6 -0.2x1 12 0 1 0 0 0 -0.8 0.6
値 z x1 x2 λ1 λ2 λ3 λ4
z
λ1λ2λ3λ4
x1 x2 λ1 λ2 λ3 λ4
z
x1λ2λ3λ4
x1 x2 λ1 λ2 λ3 λ4
z
x1x2λ3λ4
製品1 製品2 利用可能時間
M1 2 0 90M2 3 3 150M3 1 3 120M4 3 4 180
生産量 1 1
78
どう?そろそろ単体表にも慣れた?
杉原
森井
これが問2の正解です。
値 z x1 x2 λ1 λ2 λ3 λ4
z 0 1 -1 -1 0 0 0 0
λ1 90 0 2 0 1 0 0 0 45λ2 150 0 3 3 0 1 0 0 50λ3 120 0 1 3 0 0 1 0 120λ4 180 0 3 4 0 0 0 1 60
x1 x2 λ1 λ2 λ3 λ4
z 45 1 0 -1 0.5 0 0 0
x1 45 0 1 0 0.5 0 0 0 -λ2 15 0 0 3 -1.5 1 0 0 5λ3 75 0 0 3 -0.5 0 1 0 25λ4 45 0 0 4 -1.5 0 0 1 11.25
x1 x2 λ1 λ2 λ3 λ4
z 50 1 0 0 0 0.333333 0 0
x1 45 0 1 0 0.5 0 0 0x2 5 0 0 1 -0.5 0.333333 0 0λ3 60 0 0 0 1 -1 1 0λ4 25 0 0 0 0.5 -1.33333 0 1
ちょっと待った!
79
実はもう1ステップ、進めることができる。いま第Ⅲステップの基底変数はλ3,λ4で、λ1,λ2は非基底変数だ 。ところがλ1の係数は0で、λ2みたいに正の値ではない。
これは、まだ進んでいいというサインなんだ。
値 z x1 x2 λ1 λ2 λ3 λ4
z 0 1 -1 -1 0 0 0 0
λ1 90 0 2 0 1 0 0 0 45λ2 150 0 3 3 0 1 0 0 50λ3 120 0 1 3 0 0 1 0 120λ4 180 0 3 4 0 0 0 1 60
x1 x2 λ1 λ2 λ3 λ4
z 45 1 0 -1 0.5 0 0 0
x1 45 0 1 0 0.5 0 0 0 -λ2 15 0 0 3 -1.5 1 0 0 5λ3 75 0 0 3 -0.5 0 1 0 25λ4 45 0 0 4 -1.5 0 0 1 11.25
x1 x2 λ1 λ2 λ3 λ4
z 50 1 0 0 0 0.333333 0 0
x1 45 0 1 0 0.5 0 0 0x2 5 0 0 1 -0.5 0.333333 0 0λ3 60 0 0 0 1 -1 1 0λ4 25 0 0 0 0.5 -1.33333 0 1
λで、かつ非基底変数なのに0のものがある!
基底変数
基底変数
80
なぜかって?いま第ⅢステップのZの行を解読しよう。すると、z=0×λ1 - 0.333333λ2 となっている。
つまり第Ⅲステップではλ1は非基底解で、値が0なのだが、λ1にかかっている係数が0だから、
λ1を基底解に組み入れ、その結果λ1が正の値になっても、Zが小さくはならないからだ。
値 z x1 x2 λ1 λ2 λ3 λ4
z 0 1 -1 -1 0 0 0 0
λ1 90 0 2 0 1 0 0 0 45λ2 150 0 3 3 0 1 0 0 50λ3 120 0 1 3 0 0 1 0 120λ4 180 0 3 4 0 0 0 1 60
x1 x2 λ1 λ2 λ3 λ4
z 45 1 0 -1 0.5 0 0 0
x1 45 0 1 0 0.5 0 0 0 -λ2 15 0 0 3 -1.5 1 0 0 5λ3 75 0 0 3 -0.5 0 1 0 25λ4 45 0 0 4 -1.5 0 0 1 11.25
x1 x2 λ1 λ2 λ3 λ4
z 50 1 0 0 0 0.333333 0 0
x1 45 0 1 0 0.5 0 0 0x2 5 0 0 1 -0.5 0.333333 0 0λ3 60 0 0 0 1 -1 1 0λ4 25 0 0 0 0.5 -1.33333 0 1
z=0×λ1-0.333333λ2
81
だから第Ⅲステップからλ1を基底に組み入れ、λ4を追い出したステップⅣもまた、立派な答えなんだ。
値 z x1 x2 λ1 λ2 λ3 λ4
z 0 1 -1 -1 0 0 0 0
λ1 90 0 2 0 1 0 0 0 45λ2 150 0 3 3 0 1 0 0 50λ3 120 0 1 3 0 0 1 0 120λ4 180 0 3 4 0 0 0 1 60
x1 x2 λ1 λ2 λ3 λ4
z 45 1 0 -1 0.5 0 0 0
x1 45 0 1 0 0.5 0 0 0 -λ2 15 0 0 3 -1.5 1 0 0 5λ3 75 0 0 3 -0.5 0 1 0 25λ4 45 0 0 4 -1.5 0 0 1 11.25
x1 x2 λ1 λ2 λ3 λ4
z 50 1 0 0 0 0.333333 0 0
x1 45 0 1 0 0.5 0 0 0x2 5 0 0 1 -0.5 0.333333 0 0λ3 60 0 0 0 1 -1 1 0 60λ4 25 0 0 0 0.5 -1.33333 0 1 50
x1 x2 λ1 λ2 λ3 λ4
z 50 1 0 0 0 0.333333 0 0
x1 20 0 1 0 0 1.333333 0 -1x2 30 0 0 1 0 -1 0 1λ3 35 0 0 0 0 1.666667 1 -2λ1 50 0 0 0 1 -2.66667 0 2
杉原
具体的にはどういうことなんですか?
82
直感的には…。
問2の領域は左図の着色部分だ。で、目的関数 Z=x1+x2 の値を
できるだけ大きくしようとしたら、
Z=x1+x2
A
D
BC
Z=x1+x2
D
C
線CDにぴったり重なってしまったんだね!
このとき、線CD上ならどこでも最適解だろ?
x1 x2 λ1 λ2 λ3 λ4
z 50 1 0 0 0 0.333333 0 0
x1 45 0 1 0 0.5 0 0 0x2 5 0 0 1 -0.5 0.333333 0 0λ3 60 0 0 0 1 -1 1 0 60λ4 25 0 0 0 0 .5 -1.33333 0 1 50
x1 x2 λ1 λ2 λ3 λ4
z 50 1 0 0 0 0.333333 0 0
x1 20 0 1 0 0 1.333333 0 -1x2 30 0 0 1 0 -1 0 1λ3 35 0 0 0 0 1.666667 1 -2λ1 50 0 0 0 1 -2.66667 0 2
Ⅲ
Ⅳ
ステップⅢが点D、ステップⅣが点Cなんですね!
杉原
点D
点C
83
だから、点Cと点Dを線形結合させた
答えは、みんな答えなんだ。
x1 x2 λ1 λ2 λ3 λ4
z 50 1 0 0 0 0.333333 0 0
x1 45 0 1 0 0.5 0 0 0x2 5 0 0 1 -0.5 0.333333 0 0λ3 60 0 0 0 1 -1 1 0 60λ4 25 0 0 0 0.5 -1.33333 0 1 50
x1 x2 λ1 λ2 λ3 λ4
z 50 1 0 0 0 0.333333 0 0
x1 20 0 1 0 0 1.333333 0 -1x2 30 0 0 1 0 -1 0 1λ3 35 0 0 0 0 1.666667 1 -2λ1 50 0 0 0 1 -2.66667 0 2
Ⅲ
Ⅳ
杉原
D
C
(45,5)
(20,30)
点D
点C
2030k
455+(1-k)
x1x2
=
(0≦k≦1)
数式で書くと、こうなります…。
森井
グラフで書くと、こうです。
答えのグラフ
答えの数式
84
現実問題にはまれなケースかもしれないが、少なくとも理論上はこの問題のように、最適解が無数にある可能性を知っておく必要がある。
ちなみに、最適解が1つしかなかった問1の解答 を見てみよう。
最終ステップに、非基底変数で、かつZの行が0のλがないだろ?
だから問1の場合は、たしかにここで終了なんだね!
値 z x1 x2 λ1 λ2 λ3 λ4
z 0 1 -100 -150 0 0 0 0
λ1 90 0 2 0 1 0 0 0 -λ2 150 0 3 3 0 1 0 0 50λ3 120 0 1 3 0 0 1 0 40λ4 180 0 3 4 0 0 0 1 45
x1 x2 λ1 λ2 λ3 λ4
z 6000 1 -50 0 0 0 50 0
λ1 90 0 2 0 1 0 0 0 45λ2 30 0 2 0 0 1 -1 0 15x2 40 0 0.333333 1 0 0 0.333333 0 120λ4 20 0 1.66667 0 0 0 -1.33333 1 12
x1 x2 λ1 λ2 λ3 λ4
z 6600 1 0 0 0 0 10 30
λ1 66 0 0 0 1 0 1.6 -1.2λ2 6 0 0 0 0 1 0.6 -1.2x2 36 0 0 1 0 0 0.6 -0.2x1 12 0 1 0 0 0 -0.8 0.6
基底変数 どちらも0より大きい
杉原
わかりました。
森井
それでは次の問題にいきましょう!
85
シンプレックス法で次の線形計画問題を解け。
問3
もうλを使っての定式化(基底形式への変換)はいいわ。
いきなり単体表を埋めてちょうだい。
森井
いよいよ最後だ。がんばれー。
目的関数
Z = 2x1 + 4x2 + x3 を 最大化したい
制約条件は
x1+ 2x2 ≦4
2x1+ x2 ≦3
x2+ 4x3 ≦3
x1, x2, x3 ≧0
86
この問題の表を見せてあげる。今度は4ステップかかるわ。
森井
製品1 製品2 製品3 制限
材料1 1 2 0 4材料2 2 1 0 3材料3 0 1 4 3
利益 2 4 1
値 z x1 x2 x3 λ1 λ2 λ3
z
λ1λ2λ3
値 z x1 x2 x3 λ1 λ2 λ3
z
x2λ2λ3
値 z x1 x2 x3 λ1 λ2 λ3
z
x2λ2x3
値 z x1 x2 x3 λ1 λ2 λ3
z
x2x1x3
問3
87
これであなたも単体法をマスターしました!
杉原森井
これが問3の正解。つまりx1=2/3,x2=5/3,x3=1/3、そのときz=25/3。
値 z x1 x2 x3 λ1 λ2 λ3
z 0 1 -2 -4 -1 0 0 0
λ1 4 0 1 2 0 1 0 0 2λ2 3 0 2 1 0 0 1 0 3λ3 3 0 0 1 4 0 0 1 3
値 z x1 x2 x3 λ1 λ2 λ3
z 8 1 0 0 -1 2 0 0
x2 2 0 0.5 1 0 0.5 0 0 -λ2 1 0 1.5 0 0 -0.5 1 0 -λ3 1 0 -0.5 0 4 -0.5 0 1 0.25
値 z x1 x2 x3 λ1 λ2 λ3
z 8.25 1 -0.125 0 0 1.875 0 0.25
x2 2 0 0.5 1 0 0.5 0 0 4λ2 1 0 1.5 0 0 -0.5 1 0 0.66667x3 0.25 0 -0.125 0 1 -0.125 0 0.25 -2 <-これは選ばない!
値 z x1 x2 x3 λ1 λ2 λ3
z 8.333333 1 0 0 0 1.833333 0.083333 0.25
x2 1.666667 0 0 1 0 0.666667 -0.33333 0x1 0.666667 0 1 0 0 -0.33333 0.666667 0x3 0.333333 0 0 0 1 -0.16667 0.083333 0.25
問3の正解
こりごりだぜ!
松岡
88
七瀬
あの日は結局、夕方7時まで勉強したので、クタクタになりました。こんなに苦労するようで、経営工学科でやってけるの?…と不安にもなりました。
でも私は今日はっきりと、ほんとうに心の底から納得したのです。
「経営工学は素晴らしい!」って。不思議なことにあの日、先生はその口癖を一度も言いませんでした。
これで第7話は終わりです。ありがとうございました。
来週は日本茶を
持ってきましょう。
あ、テレビみよ。
おい先公、寿司でもおごりなよ。
インスタントラーメン!
下賎な食べ物ね。 ノイズだらけじゃん。電波はいってないね。
理系のままでいればよかったかな…。
あ、もうこんな時間。たいへん、弟が…。
あの機械、何に使うんですか?
疲れた…。
マージャンできないのに
マージャンマンガが
好きなんですか?
ゴキブリ出ますよ。
掃除してください!