簡単のため
フルランク
シンプレックス法の原理
標準形 Ax b, x 0
A
c
BN ,x
cB
cN
cT x
B,Nに対応して分割
1
xB
BxB
xN
cBT xB
T
B
T
N
Nx N
b 基底行列,正則
c NT x N
1
c B b
B b 0 かつ c
2014/5/2
A : R m n (m n, rank A m)
c
T
B
x
T
N
1
T
B
1
c B N xN
c B N
0
B 1b
0
最適解
1
c
T
N
T
B
1
c B N
c
T
N
T
B
0 でないとき
1
c B N
k
0 なる
要素に負のも
のがある
非基底変数 xk を増加
目的関数値が減少
xk をどこまで増加できるか?
2014/5/2
2
xk : 0
0とすると
目的関数 cBT B 1b
基底変数 xB
c NT
1
B b
cBT B 1 N
xB
k
1
B b
と減少
1
B Ak
行列Aの第k列
xB
0 でなければならないので,
b
1
B b, y
1
B Ak とおくと
min bi yi yi
0 i 1,
,m
まで大きくできる.
2014/5/2
3
xk : 0
0 としたとき
bi yi に対応する基底変数 xi
yi
0
xi
非基底変数
基底変数の入れ替え
xk
基底変数
(ピボット操作)
0 となる i がない
xB
xB
y 0
: いくらでも大きくでき る
目的関数をいくらでも小さくできる
有界でない
2014/5/2
4
シンプレックス法の手順
B 1b,0 を選ぶ.b
Step0 : 初期実行可能基底解 xB , xN
Step1 : cNT
cBT B 1 N
0 ならば終了.xB は最適解.
そうでなければ,cNT
cBT B 1 N
k
0 なる非基底変数 xkを選ぶ.
Step2 : y
B 1 Ak を計算.
Step3 : y
0 ならば終了.有界でない.
そうでなければ, を計算し,
Step4 : 非基底変数 xk
基底変数 xB
bi yi なる i を求める.
, そのほかの非基底変数は 0 のまま.
b
y と更新しStep1へ.
min bi yi yi
2014/5/2
B 1b とおく.
0 i 1,
,m
5
例題
min 2 x1 3x2
max 2 x1 3x2
s.t. 2 x1
x2
6
x1 2 x2
6
x1
0, x2
s.t. 2 x1
0
x2
x3
6
x1 2 x2
x4
x1 , x2 , x3 , x4
0
6
標準形への変換
2014/5/2
6
【反復1】 スラック変数を基底→基底行列は単位行列,目的関数値は0
Step0 : xB
Step1 : c
T
N
x3 , x4 とする
T
B
Step2 : y
Step3 : b1 y1
Step4 : x1
xB
0 1
, xB
b
B 1b
2, 3
x1を基底変数に入れる
x1 , x2
c B N
B 1 A1
B
2 1
1 2
1
どちらも負
1 0
2, 3
2,1
3, b2 y2
T
0,0 B
1
0
6
3,
6,6
T
bi yi なる i 1
3 : 基底に入る
x3 , x4
b
y
6,6
T
3
2,1
T
0,3
T
x3 : 非基底変数になる
2014/5/2
目的関数値は-6
7
【反復2】
xB
x1 , x4
Step1 : c
T
N
b
T
B
B b
1
c B N
3,3 , B
3,0
B 1 A2
Step3 : b1 y1
Step4 : x2
2
xB
x1 , x4
2,0 B
1 / 2, 3 / 2
6, b2 y2
b
T
1
1 1
2 0
2,1
0
2
2,
y
x4 : 非基底変数になる
2014/5/2
1 1
x2 , x3
x2を基底変数に入れる
最適解ではない
Step2 : y
2 0
T
1
3,3
T
bi yi なる i
2 1 / 2,3 / 2
T
2
2,0
T
目的関数値は-10
8
【反復3】
xB
x1 , x2
Step1 : c
T
N
b
T
B
1
B b
1
c B N
T
2,2 , B
0,0
2, 3 B
1 / 3,4 / 3
2 1
1 2
1
1 0
0 1
非負
現在の x は最適解,終了.
最適値は 10
2014/5/2
9
図で見ると
シンプレックス法は,反
復ごとに隣の頂点へ移
動する.
Δの幾何学的意味
=ある辺に沿ってどこま
で進めるか
x2
6
3
③
c
2
3
x1
①
0
2014/5/2
3
②
6
10
実行時の問題点
1.Step1において cNT cBT B 1 N k 0 となる k が複数ある
→どれを選んでもよいが, cNT cBT B 1 N k が最小の
ものを選ぶと実用上有効(とされている).
2.Step3において bi yi となる i が複数ある
→複数の基底変数が同時に0になる.
負で絶対値最大
退化(degenerate)している
2014/5/2
11
退化が起こると
x2
6
3
目的関数値は変化しないが
3 x1 x2 9
基底の入れ替えがおこる
という制約を追加 同じ基底解で循環する.
↓
循環を防ぐ方法:
最小添字規則(Blandの規則)
x1
0
3
6
3つの直線が交差→退化
2014/5/2
12
シンプレックス・タブロー
または,タブロー
シンプレックス法を,表を用いて計算する.
【同じ例題】
min 2 x1 3x2
s.t. 2 x1
2014/5/2
x2
x3
6
x1 2 x2
x4
x1 , x2 , x3 , x4
0
6
13
初期タブロー TT
x3
x4
2
2
ccN
3
1
T
B
c B N
0
1
0
0
A
N
1
2 0B 1
x1
x2
1
x3
x4
0
6
6
b b
B
1
目的関数値×(-1)
基底変数
2014/5/2
14
Step1 : どちらも負なので,例 えば x1 を選ぶ.
2
3 0 0 0
x3
2
1
1 0 6
x4
1
2
0 1 6
Step2,3 : bi yi を計算し, を求める.
2
x3
x4
2014/5/2
2
1
3 0 0 0
1
2
1 0 6 b1 / y1
0 1 6 b2 / y2
3
6
15
ピボット
Step4 : 掃き出し演算
2
x3
x4
2
1
0
3 0 0 0
1
2
2
x1
1 1/ 2
x4
0 3/ 2
①この行をピボットで割る
1 0 6
0 1 6
1
1/ 2
②-2倍して引く
③1倍して引く
0 6 ピボット以外のピボット
0 3
列の要素を0にする
1/ 2 1 3
負の要素があるので Step1へ
2014/5/2
x1 が基底に入る
反復を繰り返す
16
ピボット
Step1 : x2を選ぶ
0
x1
x4
1 1/ 2
0 3/ 2
0 0
x1
1 0
x2
0 1
2014/5/2
2
1
0 6
1 / 2 0 3 b1 / y1 6
1 / 2 1 3 b2 / y2 2
すべて非負→最適(終了)
1/ 3
4 / 3 10
最適値は-10
2/3
1/ 3 2
x
2
1
1 / 3 2 / 3 2 最適解
x2
2
17
シンプレックス法のまとめ
実行可能解の隣にある頂点を探索する方法
→頂点の数は有限個→有限回で終了
計算機上ではタブローを用いて計算
残っている問題点
初期実行可能解? 計算量?
2014/5/2
18
演習課題
次の例題の最適解をシンプレックス法(タブ
ロー)を用いて求める.
(締め切り:5月8日(木)16時,Ⅳ系事務室へ)
max 3 x1 6 x2
s.t.
2014/5/2
0.1x1 0.3 x2 1.5
1.2 x1 0.5 x2
6
0.4 x1 0.3 x2
2 .4
x1
0, x2
0
19