OR第2 (2) [3mm] 単体法(シンプレックス法)...
Transcript of OR第2 (2) [3mm] 単体法(シンプレックス法)...
OR第 2 (2)
単体法(シンプレックス法)
後藤順哉中央大学理工学部経営システム工学科
2014年 5月 1日
後藤順哉 (中央大) OR 第 2 (2) 2014 年 5 月 1 日 1 / 50
この節の概要
この節の目標
単体法の手続きを理解する
単体法を幾何的に理解する
2段階単体法を理解する
1 単体法単体法:例で流れを理解しよう単体法:一般的な記述非有界(無限解)の判定
2 二段階単体法二段階単体法:例で流れを理解しよう二段階単体法:一般的な記述実行可能性の判定巡回と BlandのルールLPの 3状態
後藤順哉 (中央大) OR 第 2 (2) 2014 年 5 月 1 日 2 / 50
単体法の流れ
済 不等式標準形の LPを得る
不等式標準形から辞書表現を得る
ピボットを繰り返す(条件が満たされるまで)
条件が満たされたら終了
後藤順哉 (中央大) OR 第 2 (2) 2014 年 5 月 1 日 3 / 50
不等式標準形から初期辞書を作る(1)
次の不等式標準形の LPに対して,単体法を適用する
最大化x
5x1 + 4x2 + 3x3
条 件 2x1 + 3x2 + x3 ≤ 54x1 + x2 + 2x3 ≤ 113x1 + 4x2 + 2x3 ≤ 8
x1, x2, x3 ≥ 0
(1)
まず,スラック変数 s1, s2, s3 を導入する
最大化x ,s
5x1 + 4x2 + 3x3
条 件 2x1 + 3x2 + x3 + s1 = 54x1 + x2 + 2x3 + s2 = 113x1 + 4x2 + 2x3 + s3 = 8
x1, x2, x3, s1, s2, s3 ≥ 0
(2)
後藤順哉 (中央大) OR 第 2 (2) 2014 年 5 月 1 日 4 / 50
不等式標準形から初期辞書を作る(2)
最大化x ,s
5x1 + 4x2 + 3x3
条 件 2x1 + 3x2 + x3 + s1 = 54x1 + x2 + 2x3 + s2 = 113x1 + 4x2 + 2x3 + s3 = 8
x1, x2, x3, s1, s2, s3 ≥ 0
(2)
さらに,以下のような形に書き直す
最大化x ,s
z = 5x1 + 4x2 + 3x3
条 件 s1 = 5 − 2x1 − 3x2 − x3
s2 = 11 − 4x1 − x2 − 2x3
s3 = 8 − 3x1 − 4x2 − 2x3
x1, x2, x3, s1, s2, s3 ≥ 0
(3)
この形を (dictionary)という
後藤順哉 (中央大) OR 第 2 (2) 2014 年 5 月 1 日 5 / 50
LP の辞書表現と基底変数,非基底変数
最大化x ,s
z = 5x1 + 4x2 + 3x3
条 件 s1 = 5 − 2x1 − 3x2 − x3
s2 = 11 − 4x1 − x2 − 2x3
s3 = 8 − 3x1 − 4x2 − 2x3
x1, x2, x3, s1, s2, s3 ≥ 0
(3)
以降,少し簡潔に以下の形で辞書を表現する
z = 5BBBBBBx1 + 4BBBBBBx2 + 3BBBBBBx3
s1 = 5 − 2BBBBBBx1 − 3BBBBBBx2 − BBBBBBx3
s2 = 11 − 4BBBBBBx1 − BBBBBBx2 − 2BBBBBBx3
s3 = 8 − 3BBBBBBx1 − 4BBBBBBx2 − 2BBBBBBx3
(4)
□で囲まれた変数(s1, s2, s3)をこの辞書の基底変数BBBBBBBBBBBBBBBBBBBBBBBB網掛けされた変数(x1, x2, x3)をこの辞書の
後藤順哉 (中央大) OR 第 2 (2) 2014 年 5 月 1 日 6 / 50
基底変数,非基底変数,基底解
z = 5BBBBBBx1 + 4BBBBBBx2 + 3BBBBBBx3
s1 = 5 − 2BBBBBBx1 − 3BBBBBBx2 − BBBBBBx3
s2 = 11 − 4BBBBBBx1 − BBBBBBx2 − 2BBBBBBx3
s3 = 8 − 3BBBBBBx1 − 4BBBBBBx2 − 2BBBBBBx3
(4)
□で囲まれた変数(s1, s2, s3)をこの辞書の基底変数BBBBBBBBBBBBBBBBBBBBBBBB網掛けされた変数(x1, x2, x3)をこの辞書の非基底変数
[注意]x と s いずれも非負
非基底変数の値を 0とし,基底変数をそのすぐ右の値(5, 11, 8)とした解をという.
辞書 (4)に対応する基底解は
(x1, x2, x3, s1, s2, s3) = (0, 0, 0, 5, 11, 8)
[注意]この基底解は実行可能
後藤順哉 (中央大) OR 第 2 (2) 2014 年 5 月 1 日 7 / 50
ピボット操作(0):概要
z = 5BBBBBBx1 + 4BBBBBBx2 + 3BBBBBBx3
s1 = 5 − 2BBBBBBx1 − 3BBBBBBx2 − BBBBBBx3
s2 = 11 − 4BBBBBBx1 − BBBBBBx2 − 2BBBBBBx3
s3 = 8 − 3BBBBBBx1 − 4BBBBBBx2 − 2BBBBBBx3
(4)
(x1, x2, x3, s1, s2, s3) = (0, 0, 0, 5, 11, 8):基底解
[注意]x1, x2, x3, s1, s2, s3 のいずれも 0以上の値を取り得る
BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB非基底変数の中から増加させるもの, 基底変数 の中から減少させるものを見つける
すべての変数を非負に保ったまま基底解を改善できるかどうか考える.
後藤順哉 (中央大) OR 第 2 (2) 2014 年 5 月 1 日 8 / 50
ピボット操作(1):取り入れる非基底変数を決める
z = 5BBBBBBx1 + 4BBBBBBx2 + 3BBBBBBx3
s1 = 5 − 2BBBBBBx1 − 3BBBBBBx2 − BBBBBBx3
s2 = 11 − 4BBBBBBx1 − BBBBBBx2 − 2BBBBBBx3
s3 = 8 − 3BBBBBBx1 − 4BBBBBBx2 − 2BBBBBBx3
(4)
辞書における目的関数の非基底変数 x1, x2, x3 の係数 5, 4, 3はいずれも正なので,どれを基底に取り入れてもよい
ここでは辞書における目的関数の係数が最大の正数である x1 を基底に取り入れることにする
取り入れ変数 x1 を 0から増加させていくと,非基底変数 s1, s2, s3 の数値5, 11, 8は減っていく
そこでこれらの中で最も速く 0になってしまうものを見つけ,それを基底から追い出し,非基底変数にする
後藤順哉 (中央大) OR 第 2 (2) 2014 年 5 月 1 日 9 / 50
ピボット操作(2):追い出される基底変数を見つける
非基底変数 x1 を取り入れ変数の値を 0から増やしてみる
z = 5BBBBBBx1 + 4BBBBBBx2 + 3BBBBBBx3
s1 = 5 − 2BBBBBBx1 − 3BBBBBBx2 − BBBBBBx3
s2 = 11 − 4BBBBBBx1 − BBBBBBx2 − 2BBBBBBx3
s3 = 8 − 3BBBBBBx1 − 4BBBBBBx2 − 2BBBBBBx3
(4)
具体的には, s1 = 5 − 2x1 ≥ 0 ⇔ x1 ≤ 5/2s2 = 11 − 4x1 ≥ 0 ⇔ x1 ≤ 11/4s3 = 8 − 3x1 ≥ 0 ⇔ x1 ≤ 8/3
を満たす最小の x1 を達成する式を見つける.
min{5/2, 11/4, 8/3} = 5/2より, s1 が s2, s3 より速く 0になる
後藤順哉 (中央大) OR 第 2 (2) 2014 年 5 月 1 日 10 / 50
ピボット操作(3):新しい辞書を得る
1 取り入れ変数(取り入れられる非基底変数)x1
2 追い出し変数(追い出される基底変数)s1
s1 の式 s1 = 5 − 2x1 − 3x2 − x3 における s1 と x1 の役割を入れ換えたx1 = 5/2 − 1/2s1 − 3/2x2 − 1/2x3 を z, s2, s3 の式に代入
この手続き( 操作)により,辞書と基底解を更新
z = 12.5 − 2.5s1 − 3.5x2 + 0.5x3
x1 = 2.5 − 0.5s1 − 1.5x2 − 0.5x3
s2 = 1 + 2s1 + 5x2
s3 = 0.5 + 1.5s1 + 0.5x2 − 0.5x3
(5)
(x1, x2, x3, s1, s2, s3) = (2.5, 0, 0, 0, 1, 0.5):辞書 (5)の基底解
[注意]この基底解も実行可能
後藤順哉 (中央大) OR 第 2 (2) 2014 年 5 月 1 日 11 / 50
Exercise 2.1:引き続きピボット操作を続けてみよう
z = 12.5 − 2.5s1 − 3.5x2 + 0.5x3
x1 = 2.5 − 0.5s1 − 1.5x2 − 0.5x3
s2 = 1 + 2s1 + 5x2
s3 = 0.5 + 1.5s1 + 0.5x2 − 0.5x3
(5)
この辞書から次のピボット操作を行え.
取り入れ変数はどれか?
追い出され変数はどれか?
ピボットの結果得られる辞書はどうなるか?
後藤順哉 (中央大) OR 第 2 (2) 2014 年 5 月 1 日 12 / 50
ピボット操作(4):すべての非基底変数の係数が非負になるまで繰り返す
このような操作を繰り返し,最終的に次の辞書が得られる:
z = 13 − s1 − 3x2 − s3
x1 = 2 − 2s1 − 2x2 + s3
s2 = 1 + 2s1 + 5x2
x3 = 1 + 3s1 + x2 − 2s3
(6)
改善する取り入れ変数が存在しないので基底解
(x1, x2, x3, s1, s2, s3) = ( )
を出力し,この手続きは終了する.
[参考]ピボット操作の JAVAアプレット
http://campuscgi.princeton.edu/˜rvdb/JAVA/pivot/simple.html
自分のピボット操作の結果が正しいかどうかの確認に便利
後藤順哉 (中央大) OR 第 2 (2) 2014 年 5 月 1 日 13 / 50
Exercise 2.2
1 次の LPを図解法で解け.
最大化x1,x2
3x1 +2x2
条 件 −x1 +3x2 ≤ 12,x1 +x2 ≤ 8,
2x1 −x2 ≤ 10,x1, x2 ≥ 0.
2 上の LPを単体法で解け.3 図解法で用いた実行可能領域と単体法の基底解の変化とを対応付けよ.
後藤順哉 (中央大) OR 第 2 (2) 2014 年 5 月 1 日 14 / 50
単体法(一般の場合)(1):スラック変数を導入する
不等式標準形から始める
最大化x1,...,xn
z =n∑
j=1cjxj
条 件n∑
j=1aijxj ≤ bi , i = 1, ...,m,
xj ≥ 0, j = 1, ..., n.
(7)
スラック変数 xn+1, ..., xn+m を導入し,等式標準形を得る
最大化x1,...,xn+m
z =n∑
j=1cjxj
条 件n∑
j=1aijxj + xn+i = bi , i = 1, ...,m,
xj ≥ 0, j = 1, ..., n + m.
(8)
後藤順哉 (中央大) OR 第 2 (2) 2014 年 5 月 1 日 15 / 50
単体法(一般の場合)(2):初期辞書と初期基底解を得る
最大化x
z =n∑
j=1cjxj
条 件n∑
j=1aijxj + xn+i = bi , i = 1, ...,m,
xj ≥ 0, j = 1, ..., n + m.
(8)
スラック変数を基底,元々の変数を非基底にする
z = c1x1 + · · · + cnxn
xn+1 = b1 − a11x1 − · · · − a1nxn...
......
......
xn+m = bm − am1x1 − · · · − amnxn
:初期辞書 (9)
この辞書に対応する基底解は
(x1, ..., xn, xn+1, ..., xn+m) = ( ) (10)
[注意]一般に実行可能とは限らない
後藤順哉 (中央大) OR 第 2 (2) 2014 年 5 月 1 日 16 / 50
単体法(一般の場合)(3):初期辞書が実行可能基底解に対応するための条件
z = c1x1 + · · · + cnxn
xn+1 = b1 − a11x1 − · · · − a1nxn...
......
......
xn+m = bm − am1x1 − · · · − amnxn
(9)
この辞書に対応する基底解は
(x1, ..., xn, xn+1, ..., xn+m) = (0, ..., 0, b1, ..., bm) (10)
仮定(初期基底解(or 初期辞書)が実行可能であるための条件)
bi ≥ 0 for all i = 1, ...,m
この仮定の下で基底解(10)は LPの実行可能解である
このとき,対応する辞書(9)は実行可能であるという
後藤順哉 (中央大) OR 第 2 (2) 2014 年 5 月 1 日 17 / 50
単体法(一般の場合)(4):初期辞書における取り入れ変数 xs の選択
z = c1x1 + · · · + cnxn
xn+1 = b1 − a11x1 − · · · − a1nxn...
......
......
xn+m = bm − am1x1 − · · · − amnxn
(9)
初期辞書における取り入れ変数 xs の決定
取り入れ変数 xs の決定(最大係数基準)
s ∈ arg maxj
{cj : cj > 0, j = 1, ..., n
}≡ arg max
j
{cj : cj > 0, j ∈ N
}ただし,N := {1, ..., n}
後藤順哉 (中央大) OR 第 2 (2) 2014 年 5 月 1 日 18 / 50
単体法(一般の場合)(5):初期辞書における追い出し変数 xr の選択
xs:取り入れ変数xn+1 = b1 − a1sxs ≥ 0...
......
.........
xn+m = bm − amsxs ≥ 0
→
xs ≤
bi
aisfor ais > 0
xsは何でも OK for ais = 0
xs ≥ 0 ≥ bi
aisfor ais < 0
[注意] bi ≥ 0 for all i = 1, ...,m
初期辞書における追い出し変数 xr の決定
r ∈ arg mini
{bi
ais: i = 1, ...,m, ais > 0
}[注意]ais ≤ 0ならば,xi = bi − aisxs ≥ bi for all xs ≥ 0
xr = br −ar1x1 − · · · − arsxs − · · · − arnxn
⇔ xs =br
ars−ar1
arsx1 − · · · − 1
arsxr − · · · − arn
arsxn
これを残りのすべての式に代入して整理する後藤順哉 (中央大) OR 第 2 (2) 2014 年 5 月 1 日 19 / 50
単体法(一般の場合)(6):ピボット前後の変化
xr = br −ar ,1x1 − · · · − arsxs − · · · − ar ,nxn
⇔ xs =br
ars−
ar ,1
arsx1 − · · · − 1
arsxr − · · · − ar ,n
arsxn
B = {n + 1, ..., n + m}:初期辞書における基底変数の添字集合N = {1, ..., n}:初期辞書における非基底変数の添字集合
ピボットに伴う,添字集合の変化を書いてみると
N { N \ {s} ∪ {r}B{ B \ {r} ∪ {s}
[注意]常に B ∪N = {1, ..., n + m}, B ∩N = ϕ, |B| = m
z = z +∑
j∈N cjxj
xi = bi − ∑j∈N aijxj , i ∈ B
:辞書
後藤順哉 (中央大) OR 第 2 (2) 2014 年 5 月 1 日 20 / 50
単体法(一般の場合)(7):取り入れ変数と追い出し変数の決定
z = z +∑
j∈N cjxj
xi = bi − ∑j∈N aijxj , i ∈ B
:辞書
xj = 0 for j ∈ N ; xi = bi for i ∈ B :基底解
[注意] bi ≥ 0 for all i ∈ B ⇒実行可能
取り入れ変数 xs の決定(最大係数基準)
s ∈ arg maxj
{cj > 0 : j ∈ N
}追い出し変数 xr の決定
r ∈ arg mini
{bi
ais: i ∈ B, ais > 0
}
後藤順哉 (中央大) OR 第 2 (2) 2014 年 5 月 1 日 21 / 50
非有界性の判定
Definition ( 非有界(unbounded ))
目的関数をいくらでも大きくできる実行可能辞書が存在するとき,その LPはである(あるいは無限解を持つ)という.
これまでの考察より,LPの非有界性を判定できる
Theorem (非有界の判定)
cj > 0,かつ,すべての i = 1, ...,mに対し aij ≤ 0を満たす jが存在するならば,その LPは非有界
Exercise 2.3
次の問題に単体法を適用し,解きなさい
最大化x1,x2
x1 − 4x2
条 件 −2x1 − x2 ≤ 1,−x1 + 2x2 ≤ 2,x1, x2 ≥ 0.
後藤順哉 (中央大) OR 第 2 (2) 2014 年 5 月 1 日 22 / 50
単体法のアルゴリズム(実行可能辞書が所与の場合)
単体法(シンプレックス法)
入力:実行可能辞書ただし, B = {n + 1, ..., n + m}, N = {1, ..., n}.
Step1. cs > 0となる添字 s ∈ N を 1つ選ぶ.
そのような s がなければ終了(現在の基底解は最適).
Step2. 今の基底解から実行可能性を保ったまま非基底変数 xs だけを出来る限り増加させる. つまり,
br
ars= min
{bi
ais: ais > 0, i ∈ B
}を満たす任意の行番号 r を求める.
そのような r がなければ終了(すなわち,全ての i ∈ Bについてais ≤ 0であり,変数 xs を限りなく増加できるので LPは非有界).
存在する場合は, (r , s)を中心とするピボットを行い,N ← N \ {s} ∪ {r}, B ← B \ {r} ∪ {s}として辞書を更新し, Step1.へ
後藤順哉 (中央大) OR 第 2 (2) 2014 年 5 月 1 日 23 / 50
単体法は必ず停止するか?
基底解は多面体の端点に対応
端点の数は有限個(高々(m+nm ))
目的関数が増えるように基底変数と非基底変数を決められれば,単体法は有限回のピボットで終了する
逆に,目的関数が増えないままピボット繰り返す可能性があると,有限回で終了する保証が得られない
後藤順哉 (中央大) OR 第 2 (2) 2014 年 5 月 1 日 24 / 50
Exercise 2.4
以下の LPを単体法によって解きなさい:
最大化x1,...,x4
6x1 + 8x2 + 5x3 + 9x4,
条 件 2x1 + x2 + x3 + 3x4 ≤ 5,x1 + 3x2 + x3 + 2x4 ≤ 11,
x1, x2, x3, x4 ≥ 0.
(11)
Exercise 2.5
以下の LPを単体法によって解きなさい:
最大化x1,x2
2x1 + x2
条 件 2x1 + x2 ≤ 42x1 + 3x2 ≤ 3,4x1 + x2 ≤ 5,
x1 + 5x2 ≤ 1,x1, x2 ≥ 0.
(12)
後藤順哉 (中央大) OR 第 2 (2) 2014 年 5 月 1 日 25 / 50
1 単体法単体法:例で流れを理解しよう単体法:一般的な記述非有界(無限解)の判定
2 二段階単体法二段階単体法:例で流れを理解しよう二段階単体法:一般的な記述実行可能性の判定巡回と BlandのルールLPの 3状態
後藤順哉 (中央大) OR 第 2 (2) 2014 年 5 月 1 日 26 / 50
初期辞書が実行不可能な場合
最大化x1,x2
− 2x1 − x2
条 件 − x1 + x2 ≤ −1− x1 − 2x2 ≤ −2
x2 ≤ 1x1, x2 ≥ 0
初期辞書は実行不可能:
w = − 2x1 − x2
s1 = − 1 + x1 − x2
s2 = − 2 + x1 + 2x2
s3 = 1 − x2
(x1, x2, s1, s2, s3) = (0, 0,−1,−2, 1):実行不可能な基底解
[注意1] このまま強引にピボット操作を進めてはいけない
[注意2] LPが実行不可能だと早合点してもいけない
後藤順哉 (中央大) OR 第 2 (2) 2014 年 5 月 1 日 27 / 50
フェーズ I:補助問題を解く(1)
bi < 0なる i があると,うまくいかない:
最大化x1,x2
− 2x1 − x2
条 件 − x1 + x2 ≤ −1− x1 − 2x2 ≤ −2
x2 ≤ 1x1, x2 ≥ 0
そんなときは人工変数 x0 を導入し,補助問題を考える:
最大化x0,x1,x2
− x0
条 件 − x1 + x2 − x0 ≤ −1− x1 − 2x2 − x0 ≤ −2
x2 − x0 ≤ 1x0, x1, x2 ≥ 0
後藤順哉 (中央大) OR 第 2 (2) 2014 年 5 月 1 日 28 / 50
フェーズ I:補助問題を解く(2)
最大化x0,x1,x2
− x0
条 件 − x1 + x2 − x0 ≤ −1− x1 − 2x2 − x0 ≤ −2
x2 − x0 ≤ 1x0, x1, x2 ≥ 0
初期辞書は以下のような辞書:
w = − x0
s1 = − 1 + x1 − x2 + x0
s2 = − 2 + x1 + 2x2 + x0
s3 = 1 − x2 + x0
とりあえず,これも実行不可能な辞書
後藤順哉 (中央大) OR 第 2 (2) 2014 年 5 月 1 日 29 / 50
フェーズ I:補助問題を解く(3)
w = − x0
s1 = − 1 + x1 − x2 + x0
s2 = − 2 + x1 + 2x2 + x0
s3 = 1 − x2 + x0
取り入れ変数の選択方法を以下のようにする
フェーズ I の最初のピボットの特別ルール
x0 を取り入れ変数,
r ∈ arg mini bi なる基底変数を追い出し変数
min{−1,−2, 1} = −2より,s2 を追い出す
実行不可能の度合いが最大の変数が追い出される
後藤順哉 (中央大) OR 第 2 (2) 2014 年 5 月 1 日 30 / 50
フェーズ I:補助問題を解く(4)
w = − x0
s1 = − 1 + x1 − x2 + x0
s2 = − 2 + x1 + 2x2 + x0
s3 = 1 − x2 + x0
取り入れ変数の選択方法を以下のようにする
フェーズ I の最初のピボットの特別ルール
x0 を取り入れ変数,
r ∈ arg mini bi なる基底変数を追い出し変数 → s2
ピボットにより,以下の実行可能な辞書を得る:
w = − 2 + x1 + 2x2 − s2
s1 = 1 − 3x2 + s2
x0 = 2 − x1 − 2x2 + s2
s3 = 3 − x1 − 3x2 + s2
後藤順哉 (中央大) OR 第 2 (2) 2014 年 5 月 1 日 31 / 50
フェーズ I:補助問題を解く(5)
w = − 2 + x1 + 2x2 − s2
s1 = 1 − 3x2 + s2
x0 = 2 − x1 − 2x2 + s2
s3 = 3 − x1 − 3x2 + s2
これ以降,通常のピボット操作を施すことで,補助問題の最適辞書を得る
w = 0 − x0
x2 = 0.33 − 0.33s1 + 0.33s2
x1 = 1.33 − x0 + 0.67s1 + 0.33s2
s3 = 0.67 + x0 + 0.33s1 − 0.33s2
後藤順哉 (中央大) OR 第 2 (2) 2014 年 5 月 1 日 32 / 50
フェーズ Iからフェーズ IIへ
補助問題の最適辞書において,x0 が非基底に入っている場合,
1 x0 の列を辞書から削除した上で,
2 元の LPの目的関数を現在の非基底変数で表現したものを目的関数として辞書を作成
z = −2x1 − x2 = −3 − s1 − s2
3 その辞書に通常の単体法を適用する(フェーズ II)
w = 0 − x0
x2 = 0.33 − 0.33s1 + 0.33s2
x1 = 1.33 − x0 + 0.67s1 + 0.33s2
s3 = 0.67 + x0 + 0.33s1 − 0.33s2
→
w = −3 −s1 −s2
x2 = 0.33 − 0.33s1 + 0.33s2
x1 = 1.33 + 0.67s1 + 0.33s2
s3 = 0.67 + 0.33s1 − 0.33s2
後藤順哉 (中央大) OR 第 2 (2) 2014 年 5 月 1 日 33 / 50
フェーズ II:元の LP を解く
w = −3 −s1 −s2
x2 = 0.33 − 0.33s1 + 0.33s2
x1 = 1.33 + 0.67s1 + 0.33s2
s3 = 0.67 + 0.33s1 − 0.33s2
これは,元の LPの実行可能辞書になっている
ここから普通にピボットを繰り返していく(フェーズ II)
この例では,幸運なことに,フェーズ Iを終了した時点で最適解が得られてしまった
このように,フェーズ Iで実行可能基底解を得た後,フェーズ IIで普通にピボットを行い LPを解くアルゴリズムを という
後藤順哉 (中央大) OR 第 2 (2) 2014 年 5 月 1 日 34 / 50
Exercise 2.9
以下の LPを二段階単体法によって解きなさい:
最大化x1,x2
−x1 − x2
条 件 −x1 − x2 ≤ 5−x1 + x2 ≤ −1
x1 − 2x2 ≤ 4x1, x2 ≥ 0
(13)
また,図解法でも解きなさい.
後藤順哉 (中央大) OR 第 2 (2) 2014 年 5 月 1 日 35 / 50
1 単体法単体法:例で流れを理解しよう単体法:一般的な記述非有界(無限解)の判定
2 二段階単体法二段階単体法:例で流れを理解しよう二段階単体法:一般的な記述実行可能性の判定巡回と BlandのルールLPの 3状態
後藤順哉 (中央大) OR 第 2 (2) 2014 年 5 月 1 日 36 / 50
フェーズ I(一般の場合)(1)
初期基底解が実行不可能な場合,以下の補助的な LPに対して単体法の手続きを適用する:
最大化x0,x1,...,xn
−x0
条 件n∑
j=1aijxj − x0 ≤ bi , i = 1, ...,m,
xj ≥ 0, j = 0, 1, ..., n
(14)
Exercise 2.6
次の 2つの事実を確認せよ.
(14)は常に実行可能である
(14)は有界(目的関数値は 0以下)
後藤順哉 (中央大) OR 第 2 (2) 2014 年 5 月 1 日 37 / 50
フェーズ I(一般の場合)(2)
初期基底解が実行不可能な場合(i.e., ∃i : bi < 0),以下の補助的な LPに対して一部改訂した単体法の手続きを適用する:
最大化x0,x1,...,xn
−x0
条 件n∑
j=1aijxj − x0 ≤ bi , i = 1, ...,m, ← si ≥ 0
xj ≥ 0, j = 0, 1, ..., n.
(14)
(14)に対する単体法の適用を Iと呼ぶ.
z = − x0
si = bi −n∑
j=1aijxj + x0, i = 1, ...,m
:初期辞書
フェーズ I の最初のピボットの特別ルール
x0 を取り入れ変数,
r ∈ arg mini bi なる基底変数を追い出し変数
[注意]このピボットの後,フェーズ Iのすべての辞書は実行可能後藤順哉 (中央大) OR 第 2 (2) 2014 年 5 月 1 日 38 / 50
実行可能性の判定
最大化x1 ,...,xn
n∑j=1
cjxj
条 件n∑
j=1aijxj ≤ bi , i = 1, ...,m,
xj ≥ 0, j = 1, ..., n.
(7)
最大化x0 ,x1 ,...,xn
−x0
条 件n∑
j=1aijxj − x0 ≤ bi , i = 1, ...,m,
xj ≥ 0, j = 0, 1, ..., n.
(14)
Proposition
以下の 2つの命題は等価である
LP(7)が実行可能解を持つ
補助問題 (14)が x0 = 0なる実行可能解を持つ
[注意](14)は常に実行可能であり,x0 ≥ 0であることを考慮すると,以下の 2命題も等価
LP(7)が実行不可能
補助問題 (14)が x0 > 0なる最適解を持つ
後藤順哉 (中央大) OR 第 2 (2) 2014 年 5 月 1 日 39 / 50
実行可能性の判定
Exercise 2.8
次の問題を二段階単体法により解け最大化
x1,x2
5x1 +4x2
条 件 x1 +x2 ≤ 2−2x1 −2x2 ≤ −9
x1, x2 ≥ 0
後藤順哉 (中央大) OR 第 2 (2) 2014 年 5 月 1 日 40 / 50
フェーズ Iで人工変数が 0となる場合の取り扱い
元の LPが実行可能ならば,フェーズ I終了時以下の可能性がある
ケース (a) 得られた辞書において人工変数 x0 が非基底変数
ケース (b) 得られた辞書において人工変数 x0 が基底変数
(a)の場合 x0 の列を削除し,目的関数を変更することで,元問題の実行可能辞書を得て終了.(フェーズ IIへ)
(b)の場合 x0 に対応する式は x0 = 0 − ar 1x1 − · · · − arnxn のようになっている.この等式の右辺に現われる任意の変数と x0 を入れ替えるピボット操作をする.つまり,
x0 = 0 − ar ,1x1 − · · · − arsxs − · · · − ar ,nxn
⇔ xs = 0 −ar ,1
arsx1 − · · · −
1ars
x0 − · · · −ar ,n
arsxn
を代入して整理する.ただし,ars , 0.
[注意]他の基底解の値 bi は不変.
後藤順哉 (中央大) OR 第 2 (2) 2014 年 5 月 1 日 41 / 50
最大化x1,...,xn
z =n∑
j=1cjxj
条 件n∑
j=1aijxj ≤ bi , i=1,...,m,
xj ≥ 0, j=1,...,n.
最大化x0,x1,...,xn
−x0
条 件n∑
j=1aijxj − x0 ≤ bi , i=1,...,m,
xj ≥ 0, j=0,1,...,n.
単体法:初期化(フェーズ I)
入 力: 不等式標準形の LP
出 力: LPの実行可能性の判定. 実行可能な場合は実行可能な辞書.
Step1: 初期辞書が実行可能ならば終了.(フェーズ IIへ.)それ以外の場合は補助問題をつくり,単体法で解く.
Step2: 補助問題の最適値が負ならば終了(元問題は実行不能)
最適値が 0の場合は (a)または (b)を実行する(a) 辞書において人工変数が非基底変数であれば,その列を削除し,元問題の実行可能辞書を得て終了.(フェーズ IIへ)
(b) 人工変数が基底変数であれば,対応する等式の右辺に現れる任意の変数と入れ替えるピボット操作をする(フェーズ IIへ)
後藤順哉 (中央大) OR 第 2 (2) 2014 年 5 月 1 日 42 / 50
二段階単体法
二段階単体法(Two-Phase Simplex Method )
入力: 不等式標準形の LP
フェーズ I: 補助問題を解き実行可能辞書を求める.もし実行不可能と判定されたならば終了.
フェーズ II: フェーズ Iにより得られた辞書から単体法を実行
通常,特に断らずとも,単体法と言えば二段階単体法を指す
単体法は必ず停止するか?
基底解は多面体の端点に対応
端点の数は有限個(高々(m+n+1m )(フェーズ I)or (m+n
m )(フェーズ II))
目的関数が増えるように基底変数と非基底変数を決められれば,二段階単体法は有限回のピボットで終了する
逆に,目的関数が増えないままピボット繰り返す可能性があると,有限回で終了する保証が得られない
後藤順哉 (中央大) OR 第 2 (2) 2014 年 5 月 1 日 43 / 50
以下の LP を単体法で解きなさい
Exercise 2.10 (Vanderbei Exercise 2.3)
最大化x1 ,x2
2x1 − 6x2
条 件 −x1 − x2 − x3 ≤ −2,2x1 − x2 + x3 ≤ 1,
x1, x2, x3 ≥ 0.
(15)
Exercise 2.11 (Vanderbei Exercise 2.4)
最大化x1 ,x2 ,x3
−x1 − 3x2 − x3
条 件 2x1 − 5x2 + x3 ≤ −5,2x1 − x2 + 2x3 ≤ 4,
x1, x2, x3 ≥ 0.
(16)
Exercise 2.12 (Vanderbei Exercise 2.5)
最大化x1 ,x2
x1 + 3x2
条 件 −x1 − x2 ≤ −3,−x1 + x2 ≤ −1,
x1 + 2x2 ≤ 4,x1, x2 ≥ 0.
(17)
後藤順哉 (中央大) OR 第 2 (2) 2014 年 5 月 1 日 44 / 50
Exercise 2.13 (Vanderbei Exercise 2.6)
最大化x1 ,x2
x1 + 3x2
条 件 −x1 − x2 ≤ −3,−x1 + x2 ≤ −1,−x1 + 2x2 ≤ 2,
x1, x2 ≥ 0.
後藤順哉 (中央大) OR 第 2 (2) 2014 年 5 月 1 日 45 / 50
巡回の例(田村・村松 2002)
最大化x1 ,x2 ,x3
x1 − 2x2 + x3 =: z
条 件 2x1 − x2 + x3 ≤ 0 ← x43x1 + x2 + x3 ≤ 0 ← x5−5x1 + 3x2 − 2x3 ≤ 0 ← x6
x1, x2, x3 ≥ 0.
x1 x2 x3
z 0 1 −2 1
x4 0 −2 1 −1
x5 0 (−3) −1 −1
x6 0 5 −3 2
←
x1 x6 x3
z 0 − 73
23 −
13
x4 0 − 13 − 1
3 −13
x5 0 − 143
13 −
53
x2 0 53 (− 1
3 )23
←
x1 x6 x4
z 0 −2 1 1
x3 0 −1 −1 (−3)
x5 0 −3 2 5
x2 0 1 −1 −2
↓ ↑x5 x2 x3
z 0 − 13 −
73
23
x4 0 23
53 (− 1
3 )
x1 0 − 13 −
13 − 1
3
x6 0 − 53 −
143
13
→
x5 x2 x4
z 0 1 1 2
x3 0 2 5 −3
x1 0 −1 −2 1
x6 0 −1 (−3) −1
→
x5 x6 x4
z 0 23 −
13 −
73
x3 0 13 −
53 −
143
x1 0 (− 13 )
23
53
x2 0 − 13 −
13 −
13
後藤順哉 (中央大) OR 第 2 (2) 2014 年 5 月 1 日 46 / 50
巡回と Bland のルール
無限ループによって単体法が終了しない状態を巡回という. 上記の枠組みでは同じ辞書が何度も現れ,巡回に陥る可能性を排除できない.
この巡回現象が(理論上絶対に)起こらないようにする工夫がいくつか提案されており,その 1つが以下の Blandの最小添字ルールである
Bland の最小添字ルール
(1) 単体法で取り入れ変数を選択する際,候補が複数あれば,添字が最小のものを選ぶ.
(2) 単体法で追い出し変数を選択する際,候補が複数あれば,添字が最小のものを選ぶ.
Theorem (単体法の有限回収束)
各反復で Blandの最小添字ルールを適用すれば,単体法は有限回で終了する.
後藤順哉 (中央大) OR 第 2 (2) 2014 年 5 月 1 日 47 / 50
LP の 3状態
他の最適化問題にない LP の重要な性質
LPは「最適解を持つ」か「実行不可能」か「 」かのいずれかしかない.
LPでない場合,必ずしも成立しない. 例えば,次の最小化問題は実行可能であり,有界でもあるが,最適解は存在しない
最小化x,y
y
条 件 xy ≥ 1,x ≥ 0
後藤順哉 (中央大) OR 第 2 (2) 2014 年 5 月 1 日 48 / 50
単体法の特徴と実用性
計算複雑性の理論で明らかにされている限りでは,内点法に対し劣勢.
実用上,大規模な問題に対しても高速.多くの場合,内点法に比肩する
実務的な問題は “構造”を持っていることが多く,そういう構造を利用できることも多い
既に最適解が得られている LPに少し変更が加えられた場合,既に得られている最適解の情報を使って新しい最適解を目指すことができる(内点法は苦手)
後藤順哉 (中央大) OR 第 2 (2) 2014 年 5 月 1 日 49 / 50
これまでにわかったことと今後の目標
これまでにわかったこと
単体法は Blandルールの下で有限回で停止する
単体法は最適解がある場合はそれを出力し,そうでない場合は,実行不可能か非有界であることを判定する
原理的にどんな LPでも解ける
今後の目標
停止したとき最適解が得られていることを示す
双対理論を通して,LPの理解を深める
後藤順哉 (中央大) OR 第 2 (2) 2014 年 5 月 1 日 50 / 50