分枝限定法~整数計画問題 - 慶應義塾大学 理工学部管理工学科

Download Report

Transcript 分枝限定法~整数計画問題 - 慶應義塾大学 理工学部管理工学科

慶應義塾大学 理工学部
管理工学科4年 曹研究室
60803571
遠藤 健司
 分枝限定法についての理解
整数計画法を解く上での3つの基本的概念
(緩和、分割統治、測深)
 分枝限定法のアルゴリズム
 数値例
 分枝限定法を効率よく解くための工夫

 線形計画問題
シンプレックス法
 双対シンプレックス法


「数理計画法の基礎」



坂和正敏 著
森北出版(株)(1999,初版)
「数理計画法」~最適化の手法


森哲夫 著
共立出版(株)(1994,初版)
 分枝限定法

1960年にA.H.LandとA.G.Doigによって提案
され、R.Dakin、E.M.L.Bealsらによって改
良された、一般の混合整数計画問題を解くた
めの最も実用的な手法

整数計画問題

線形計画問題の一部の変数またはすべての変数に整数条件が付
加された問題
ベクトル行列形式(P0)で表わすと…
n
min z 
c
j
min z  cx
xj
j 1
s .t A1 x  b 1
A2 x  b 2
j 1
x  0
n
x1  Z
n
s .t . a
a
ij
ij
x j  b i i  1,..., m 1
x j  b i i  m 1  1,..., m
j 1
x j  0 j  1,..., n
x j  Z j  1,..., n1  n
n1
, x2  
n  n1
=P0とする
・n1=nのとき
:全整数計画問題
・n1<nのとき
:混合整数計画問題
1.
緩和法

整数計画問題の制約条件の一部を無視して得られるより易しい
問題を解くことで、もとの問題を解くという基本的概念
P0 : min{ cx | x  X 0 }

( X 0 :実行可能領域)
P0 の緩和問題(P0 )
P0 : min{ cx | x  X 0 }, X

0
 X0
緩和法の原理
1.
2.
3.
緩和問題 P 0 が実行可能解をもたなければ、もとの問題 P0 も実行可能解
をもたない。
0
緩和問題 P 0 の最適解 x 0 がもとの問題 P0 の実行可能解であれば、x
はもとの問題 P0 の最適解である。
0
緩和問題 P 0 の最適解 x 0 と、もとの問題 P0 の最適解 x に対して、
0
0
c x  cx なる関係が成立する。
2.
分割統治法

与えられた最適化問題の実行可能領域上での目的関数の最適化
は困難であっても、分割されたより小さな領域における一連の
最適化問題を解いて得られた結果を統合することで、間接的に
もとの問題を解くという基本的概念

P0 の部分問題( Pi )
:P0 の実行可能領域 X 0 をいくつかの部分領域 X 1 ,..., X k に分割し
て、分割された各部分領域 X i に対応する問題
k
min{ cx | x  X i }, i  1,.., k X
i
 X0
i 1

X0
の分割 { X 1 ,..., X k } に対する部分問題Pi の最適値を
z  min{ cx | x  X i }, i  1,..., k
i
とするとき、もとの問題P0 の最適
値 z は z 0  min z i で与えられる。
0
i 1 ,..., k
3.
測深


部分問題 Pi の最小値 z i の大きさを調べること。
測深済



:部分問題Pi が暫定解(既に得られているP0 の最良値:z )より
も良い実行可能解を含んでいないと判断された場合
終端
:部分問題 Pi の探索処理を終了すること。
以下3つの測深基準のいずれか1つが満たされた場合、部分問
題 Pi は測深済となる。
1.
2.
3.
実行不可能性
:緩和問題 Pi が実行不可能の場合
最適値の被優越性
i
i

: z  z となる場合 ( z : 緩和問題 Pi の最適値)
最適性
:緩和問題 Pi の最適解がたまたま部分問題 Pi の実行可能解となる場合


混合整数計画問題( P0 )
Cx  Dy  b
x  0, x  Z
y 0
0
min z  cx  dy
min z  cx  dy
s .t . 連続緩和問題( P )
n
s .t . Cx  Dy  b
x  0, y  0
の最適解 ( x , y ) が整数解にならない場合
→連続緩和問題を子問題( P1, P2)(部分問題)に分割
0
 P0
0
0
0
x s : x の成分のうち、整数でない成分の一つ
P1 : min{ cx  dy | C x  D y  b , x j  0 , j  1,..., n x s  x s , x  Z , y  0}
0
n
P2 : min{ cx  dy | C x  D y  b , x j  0 , j  1,..., n x s
0
 1  x
, x  Z , y  0}
s
n
但し、x s  0 , x s  Z
の最適値 z  min( z , z ) (子問題を解く)
→部分問題を解くことにより、もとの問題 Pを解いたこと
0
になる。
→子問題 P,1 P2も同様に連続緩和問題 P1, Pを解く。
2
→ P,1 P2のいずれかの問題の最適解が整数解にならなけれ
ば、 P1 ,P2 を2つの子問題に分割し、その連続緩和問題
を解く…
0
 P0

1
2
では、子問題 Pk の連続緩和問題 Pk を解く際の3つの場合
をまとめてみると…
k
k
( x , y ) : Pk の最適解(
P0 の実行可能解)
z  c x  d y : Pk の最適値
k
k


k
P0 の暫定解(但し、P0 の実行可能解が得られていない場合は

z   とする。



z  c x  d y : P0 の暫定値
(x , y ) :
が実行可能解をもたない場合
1. Pk
Pk

も実行可能解をもたないので終端する。
2. ( x , y ) が整数解の場合
k
k
z  z
k

k
k
であれば、( x , y ) は現在の暫定解よりもよいP0 の実行可
能解となるので、( x k , y k ) を新しい暫定解として終端する。
k

z  z であれば、暫定解を更新せずに終端する。
a.
b.
3. ( x , y ) が整数解でない場合
k
a.
b.
k
z  z
k

であれば、Pk は暫定解よりもよい解を含んでいる可能性
k
k
があるので、x の成分のうち整数条件をみたさない変数x s を適
当に選択してPk を二つの子問題に分割する。
k

z  z であれば、暫定解を更新せずに終端する。
min z  4 x1  5 x 2
s .t . x1  4 x 2  5
3 x1  2 x 2  7
x1  0 , x 2  0 x1 , x 2  Z
分枝限定法のアルゴリズムを適用
すると次のような探索過程と樹状
図のようになる。

分枝変数に対応するペナルティを導入し、強力な下界値
を求めることで、余分な分枝探索を削除するための、よ
り強力な判断基準を与えることができる。
Pk : min { cx  dy | C x  D y  b , x  0 , y  0} 緩和問題
J N : 最適基底解 ( x , y ) と最適値 z k に対応する非基底変数の添字の集合
w j , j  J N : 非基底変数
 x r   a rj w j  x rk , x r は基底変数

j J N

k
z

z
  c j w j , c j  0,  j  J N

j J N

k
k
k
・・・(*)式
k
x i : ( x , y ) の x 成分のうち、整数条件を満たさない分枝変数
I : 最適基底解のうち、整数条件を満たさないものの添字の集合
xi , i  I
k
二つの子問題を生成する。
Pi  1 : min { cx  dy | C x  D y  b , x j  0 , j  1,..., n x i  x i , x  Z , y  0}
k
n
Pi  2 : min { cx  dy | C x  D y  b , x j  0 , j  1,..., n x i   1 
k
k
x i x  Z , y  0} xi  0, xi  Z
n
は整数条件を満たしていないため、整数部分と小数部分に分けられる。
xi
x i  x i
k
k

f i , 0  f i  1, i  I
k
k
親問題と子問題の連続緩和問題の最適値の関係(定理)
z
z
i 1
 z  min {
k
j J N
i 1
 z  min {
k
j J N
cj
| a ij  0} f i  z  Pi
k
a ij
( c j )
k
→下方ペナルティ
| a ij  0}( 1  f i )  z  Pi
k
a ij
D
k
U
→上方ペナルティ

(*)式より、非基底変数 w が整数であるものに関して
は、非基底変数 w を0から増加させるには、少なくとも
+1増加させなければならないので、対応する目的関数 z
は、少なくとも c j 増加することになる。
j
j
Pi
D*
I
 c j f i k a ij j JN
 min 
k
I
a ij  0
 max{ c j , c j f i a ij } j  J N
I
 c j (1  f i k ) (  a ij ) j JN
 min 
k
I
a ij  0
 max{ c j , c j (1  f i ) (  a ij )} j  J N
Pi
U*
Pi
D*
 Pi , Pi
I
非基底変数で整数変数を満たさない変数の添字集合
JN :
D
U*
 Pi
U

1.
2.
分枝変数が一意的に決定されない場合、整数値をとらな
い分枝変数を選び出す方法は、以下二つの規則に基づく。
Max-Max則

生成される二つの子問題のうち、目的関数値の大きい方を最も
大きくするように分枝変数を選ぶ。

一般的に、もとの問題の少なくとも一つ実行可能解が得られる
まで適用する。
Max-min則


生成される二つの子問題のうち、目的関数値の小さい方を最も
大きくするように分枝変数を選ぶ。
実行可能解が一つでも得られた場合に適用する。

Max-max則適用時
max{ Ps

D (*)
U (*)
, Ps
}  max max{ Pi
D (*)
i I
, Pi
U (*)
}
Max-min則適用時
min{ Ps
Ps
D (*)
U (*)
Ps
D (*)
U (*)
, Ps
}  max min{ Pi
i I
D (*)
, Pi
U (*)
}
: 規則に従い決定された分枝変数 x s を選択したときの
(強力な)下方ペナルティ
: 規則に従い決定された分枝変数 x s を選択したときの
(強力な)上方ペナルティ

先ほどの定理 z i 1  z k  Pi D , z i 1  z k  PiU より、現在の暫
定値 z  に対して z  max P  z , z  max P  z
であれば、子問題 Pi 1 , Pi  2を終端させることができる。
k
i I


D
k

U
i
i I
i
また、z i 1  z k  Pi D , z i 1  z k  PiU は、親問題 Pk の最適解 z k
に対して、z  min{ z , z }  z  min{ P , P } とみなすことも
できるため、z  z  max min{ P , P } なる関係式が得られる。
よって、現在の暫定値 z  に対して max min{ P , P }  z  z
ならば、親問題 Pk を終端させることができる。
( z k  z  ならば、整数解を更新せずに終端できるため)
i 1
k
i 2
k
D
i
k
k
D
i I
i
U
i
U
i
D (*)
i I
※
限定操作:Pk の最適値と現在の暫定値を比較すること
i
U (*)
i
k
k

事前型規則:あらかじめ選択する順番を決めておく

LIFO(Last-In-First-Out)則=深さ優先規則



バックトラック
幅優先規則
適応型規則:

最良推定値規則

最良下界規則
min z   9 x1  19 x 2  11 x 3
 z 0   152 , s .t . 2 x1  5 x 2  3 x 3  37
x1 
57
7
4 x1  3 x 2  2 x 3  45
0
4
1
7
, x2 
29
 4
7
1
7
上方ペナルティと下方ペナル
ティを計算すると次のようにな
る。
0  x1 , x 2 , x 3  Z
x ,x
この例題 P にスラック変数
を導入して対応する連続緩和
問題P
をシンプレックス法
で解けば、次のような最適基
底形式が得られる。
8
5
D*
P2
1 (1 2 )( 1 7 )
7 ( 7 2 )( 1 7 )
,
}, max{
,
}
2
(4 7)
2
(2 7)
 min{max{
0
 min{max{
U*
P2
P1
x 2 
x1 
4
7
1
14
x 3 
x3 
2
7
3
14
x 4 
x4 
1
7
5
14
x5 
x5 
D*
1 1
7 7
1
, }, max{
, }} 
2 8
2 4
2
1 (1 2 )( 6 7 )
,
}}  min{max{
2
(1 7 )
 min{max{
 min{max{
5
1
7
1
 z  x 3  x 4  x 5  152
2
2
2
 x r   a rj w j  x rk , x r 
j J N

k
 z  z   c j w j , c j  0,  j  J N
j J N

1
2
57
U*
P1
 min{max{
, 3}}  3
2
1 (1 2 )( 1 7 )
1 (1 2 )( 1 7 )
,
}, max{
,
}}
2
(1 14 )
2
( 5 14 )
 min{max{
29
7
1
,1}, max{
1 1
1
, }} 
2 5
2
7 ( 7 2 )( 6 7 )
,
}}  min{max{
2
( 3 14 )
7
,14 }}  14
2
k
I


j JN
 c j f i a ij D*
 Pi  min 
k
I
a ij  0


 max{ c j , c j f i a ij } j  J N

k
I

j JN
 U*
 c j (1  f i ) (  a ij ) 
k
I
 Pi  amin
ij  0

 max{ c j , c j (1  f i ) (  a ij )} j  J N

min{ P2 , P2 } 
D*

min{ Ps
D (*)
U*
U (*)
, Ps
1
2
, min{ P1
D*
, P1 } 
}  max min{ Pi
i I
U*
D (*)
, Pi
2
U (*)
となり、ペナルティは等し
x2
くなるので、ここでは
29
1
x 
 4
を分枝変数にとる。
7
7
から
x 2  4 ( x 2  s1  4 )
最良下界規則より、
Pを
P1
1
導入した子問題 の連続緩
和問題
を、双対シンプレックス法
で解く。
以上の作業を深さ優先規則
に従い、暫定値が見つかる
ところまで探索を繰りかえ
す。
2
1
}

ラグランジュ緩和についての理論を学ぶ。


ラグランジュ未定乗数法
最急降下法