Download as pdf or txt
Download as pdf or txt
You are on page 1of 22

数理計画法と最適化

第2回

東京大学工学系研究科
システム創成学専攻
鈴木克幸
例題の標準形

min ( − x1 − 2 x2 )
subject to
x1 + 3x2 + x3 = 15
x1 + x2 + x4 = 7 スラック変数を用いて
不等号を等号に変換
2 x1 + x2 + x5 = 12
xi ≥ 0 (i = 1,…5)

基底解は、5つの設計変数のうち、
2つがゼロとなる点
角点も基底解に含まれる 39
最適解は基底解のいずれか
 可能領域は凸多角形(凸多面体)
 直線(平面)とぶつかるのは角
 数学的にも証明可能だが、ここでは
省略

40
xf15342

列挙法
 解の可能性のある基底解を総当たりする
x1 x2 x3 x4 x5 可能 f
① 0 0 15 7 12 ○ 0
② 0 5 0 2 7 ○ -10
③ 0 7 -6 0 5 × ×
④ 0 12 -21 -5 0 × ×
⑤ 15 0 0 -8 -18 × ×
⑥ 7 0 8 0 -2 × ×
⑦ 6 0 9 1 0 ○ -6
⑧ 3 4 0 0 1 ○ -11 最適解
⑨ 21/5 18/5 0 -4/5 0 × ×
⑩ 5 2 4 0 0 ○ -9
41
列挙法は万能か
 解が得られることは保証される
 検討する基底解の数は設計変数をn個、
制約条件をm個とすればnCm個
 計算時間は指数関数的に増加

 P問題とNP問題
 P≠NP予想~未解決問題の1つ

42
P≠NP予想
 計算複雑性理論(計算量理論)におけるクラスPとクラスNP
が等しくないという予想。2000年にクレイ数学研究所のミレ
ニアム懸賞問題の一つとして、この問題に対して100万ドル
の懸賞金がかけられた。
 クラスP:多項式時間で判定可能な問題
 クラスNP:判定に指数関数時間が必要(と考えられる)問題

f(x)=x^2+5x+6
g(x)=2^x 出典: フリー百科事典
『ウィキペディア(Wikipedia)』
43
余談:量子コンピュータ
 0と1の両方を重ね合わせた状態をとる「量子ビット」
を使って計算を行う。
 量子コンピューティングを用いれば、組み合わせ最
適化などのNP問題を高速に解ける?

44
シンプレックス法(単体法)
 G.B.Danzig(1947)が考案

 基底解から他の基底解に移動
 どのように移動する?
 最適解に達したら終了
 最適解かどうかの判断は?

45
再び標準形
min cT x
設計変数n個
subject to
制約条件m個
Ax = b A: m×n行列
x ≥0 各成分が≥0
 xB   x B  基底ベクトル m個
min ( cB cN ) x= 
T
x 
 N  x N  非基底ベクトル(n-m)個
subject to
 xB 
[ B N ]  = b
 xN 
xB ≥ 0 x N = 0 46
基底解が可能かどうか
min ( cB T x B + cN T x N )
subject to
Bx B + Nx N = b x B = B − 1 ( b − Nx N )
xB ≥ 0 xN = 0
x N = 0, x B = B −1 ( b − Nx N ) = B −1b
−1
が可能解であるためには、 B
x = B b ≡ b ≥ 0 が必要

基底解が、可能である条件 b ≥ 0
47
基底解が、最適かどうか
f = cBT x B + cNT x N
= cBT ( b − B −1 Nx N ) + cNT x N
= cBT b + ( cTN − cBT B −1 N ) x N
≡ cBT b + cNT x N

この基底解が最適解であるためには、 c N ≥ 0 が必要(十分でもある)
そうでないと、それに対応するxiを増やせば、fは減少する

基底解が、最適である条件 c N ≥ 0
48
シンプレックス法のアルゴリズム
 可能基底解から始める(初期可能基底解
が判らない時は、後述)
 基底変数と非基底変数を1つ入れ替え、新
たな可能基底解を求める。
 その解が最適性を満足するか判断し、満
足しなければ繰り返す。

49
基底変数の入れ替え
cN の中の一番小さい成分(<0)に対応するxNを増やし、
基底変数にする( xi とする)

xB = b − B −1ni xi のどれかの成分がゼロになるまで xi
を増やし、ゼロになった成分を非基底変数にする。

x B = b − B −1ni xi ≡ b − ai xi
 bj 
θ = min  
j ( aij > 0 ) a
 ij 

50
シンプレックス法(例題~1)
初期可能  x1   0 
x 15 
基底解  x2   0  N  
    b = B − 1b =  7  ≥ 0 可能
 x3  = 15  12 
 x   7  xB  
 4  
 x5  12 
 −1  最適でない
c N = c N − N T B −1c B =  
 −2 
cN cB  x1 
 
min {−1 −2 0 0 0}  ⋮  15  3
x     
 5 xB =  7  − 1  x2
 x1  12  1 
N B    
   x1  0  xN
 1 3 1 0 0  x2  15   x  5 
1 1 0 1 0  x  =  7 
  3   θ = min {153 7 12
}=5  2   
 x3  = 0 
1 1
 2 1 0 0 1  x4  12 
  x2が基底に入る x2 =5  x  2 
 x5   4    xB
x3が基底から外れる x3 =0  x5  517 
シンプレックス法(例題~2)
5 
cN cB  x1   
  b = B −1b = 2  ≥ 0 可能
min {−1 −2 0 0 0}  ⋮ 
7 
x   
 5
N B  x1   −2 
  T −1

   3
1 1 2 5
3   − 13 
cN = c N − N B cB =   −   0 = 2 
3
 1 3 1 0 0  x2  15 
− − 1 
1 1 0 1 0  x  =  7     3
0 1 1
3 3    3 
  3   0
 2 1 0 0 1  x4  12 
  最適でない
 x5 
5   13 
   
xB = 2  −  2 3  x1
掃き出し操作
7   5 
   3
3 x
 1 3 1 1 3 0 0  x1   5  5 2 7 4  B
 2 0 − 1 1 0  ⋮  =  2  θ = min  =3  
 3 3
     13 2
3
5
3
x = 0  x
   
 3 0 − 3 0 1  x5  7 
N
5 1
x1が基底に入る x1 =3 0 
 
x4が基底から外れる 52 2 
シンプレックス法(例題~3)
4 
  可能
cB cN  x1  b = B −1b =  3  ≥ 0
 
min {−1 −2 0 0 0}  ⋮  2 
 
x 
 5  −2 
B N   
0 1/ 2 − 1/ 2 1/ 2  
c N = c N − N T B − 1c B =   −    −1 
 1 3 1 1 3 0 0  x1   5    
0 − 1/ 2 3 / 2 − 5 / 2  
 2 0 − 1 1 0  ⋮  =  2  0
 3 3
   
    1/ 2 
 3 0 − 3 0 1  x5  7 
5
最適
1
= ≥0
1/ 2 
掃き出し操作
3
0 1 1/ 2 −1/ 2 0  x1   4  4 
1 0 −1/ 2 3/ 2 0  ⋮  =  3   
     最適解 x = 0 
   
0 0 1/ 2 −5 / 2 1   x5   2  0 
 
 2 

53
最適解への経路

54
シンプレックス表
掃き出し操作

x1 x2 x3 x4 x5 θ x1 x2 x3 x4 x5 θ
f
最適解
0 -1 -2 0 0 0 f 11 0 0 1/2 1/2 0
x3 15 1 3 1 0 0 5 x2 4 0 1 1/2 -1/2 0
x4 7 1 1 0 1 0 7 x1 3 1 0 -1/2 3/2 0
x5 12 2 1 0 0 1 12 x5 2 0 0 1/2 -5/2 1

掃き出し操作

x1 x2 x3 x4 x5 θ  x2   4 
 x  =  3, f = 11
f 10 -1/3 0 2/3 0 0  1  
 x   2
x2  5  
5 1/3 1 1/3 0 0 15
x4 2 2/3 0 -1/3 1 0 3
x5 7 5/3 0 -1/3 0 1 21/5 55
2段階シンプレックス法
 初期可能基底解が判らない時

 min  xai
 問題Aを初期可能基底解
A  Ax + x a = b x = 0, xa = b
 x ≥ 0, x ≥ 0 で解く。
 a

解が xa = 0 の時、xが問題Bの
 min c T x
 可能基底解、そうでない場合、
B  Ax = b 問題Bには可能解が存在しない。
x ≥ 0

56
内点法
 実行可能領域の周辺から最適解に行く代わりに、
実行可能領域の内部を通る。
 大規模な問題に対して有効(と言われる)
 様々な手法が提案されている

57
内点法騒動
 カーマーカー特許とソフトウェア
―数学は特許になるか (中公新書)
 今野 浩 (著)

 線形計画法の内点法をめぐる特許騒動の
顛末記
 ソフトウェア特許問題の発端
 特許ビジネスはどこへ行くのか―IT社会の
落とし穴
 今野 浩 (著)
58
宿題
 下記の問題をシンプレックス法を使って解きなさい。
(シンプレックス表を使うと楽)

max f = 3 x1 + 5x2
3x1 + 2x2 ≤ 18
x2 ≤ 6
x1,x2 ≥ 0
59

You might also like