| 0 t 1 tksuzuki/teaching/ch4.pdf · 2009-06-29 · t $ 0 lp p 0 ¯` b ( :

22
4 整数計画法 —0 1 ? 章で学んだ は,特定の条件が満たされない限り解は実数でした.現実の問 題に適用する際に,人数や製品の出荷数などは小数にはならないので,適当に数 値を丸めてやる必要があります.通常は,そのような操作で対処できるでしょう. しかし,問題によっては数値を丸めることで大きく解の性質が異なる場合があり ます.特に,数値が かによって解釈が正反対になってしまうような場合, 単に解を四捨五入するだけではすまされません. 解の取りうる範囲を整数の範囲に制限した問題は,整数計画問題と呼ばれます. スケジューリングや割り当てなど,多くの応用事例があります. 4.1 整数計画法 4.1.1 再びクッキーの製造 変数が整数値のみをとる問題,すなわち問題の制約条件に整数条件が入っている問題を整数計 画問題 といいます. 章の線形計画問題では,すべての変数は実 数値をとりうるものとしました.そのため,最適解では,クッキーの枚数や家具の製造数なども小 数で表される場合がありました.現実には,椅子を 単位作るということはありえないので,値 は整数でなくてはならないでしょう.しかし,常に整数の条件をつけて問題を解く必要はありませ ん.例えば,x 1 = 447.7 という計算結果を四捨五入してチョコチップクッキーを 枚作るとして も,その誤差は無視しうるものです.その一方で整数の条件が本質的な役割を果たす場合がありま す.たとえば,何かがある ない,何かを行う 行わない,という 者択一の決定を含む問題です. まずは,例を見ることにしましょう. 節でクッキーの製造の問題を考えました.これをもう一度取り上げてみることにします. クッキー製造に考慮した条件は,次の通りです. 材料費の合計を小さくしたい. 作る枚数は全部で 枚とする. 準備時間は 時間を越えることはできない. 調理時間は 時間を越えることはできない.

Upload: others

Post on 19-Feb-2020

0 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: | 0 T 1 Tksuzuki/teaching/ch4.pdf · 2009-06-29 · t $ 0 lp p 0 ¯` b ( :

105

第4章 整数計画法— 0か1か?

1章で学んだ LPは,特定の条件が満たされない限り解は実数でした.現実の問題に適用する際に,人数や製品の出荷数などは小数にはならないので,適当に数値を丸めてやる必要があります.通常は,そのような操作で対処できるでしょう.しかし,問題によっては数値を丸めることで大きく解の性質が異なる場合があります.特に,数値が 0 か 1 かによって解釈が正反対になってしまうような場合,単に解を四捨五入するだけではすまされません.解の取りうる範囲を整数の範囲に制限した問題は,整数計画問題と呼ばれます.スケジューリングや割り当てなど,多くの応用事例があります.

4.1 整数計画法

4.1.1 再びクッキーの製造

変数が整数値のみをとる問題,すなわち問題の制約条件に整数条件が入っている問題を整数計画問題 (intger programming problem)といいます.1章の線形計画問題では,すべての変数は実数値をとりうるものとしました.そのため,最適解では,クッキーの枚数や家具の製造数なども小数で表される場合がありました.現実には,椅子を 0.5単位作るということはありえないので,値は整数でなくてはならないでしょう.しかし,常に整数の条件をつけて問題を解く必要はありません.例えば,x1 = 447.7という計算結果を四捨五入してチョコチップクッキーを 448枚作るとしても,その誤差は無視しうるものです.その一方で整数の条件が本質的な役割を果たす場合があります.たとえば,何かがある/ない,何かを行う/行わない,という 2者択一の決定を含む問題です.まずは,例を見ることにしましょう.

1.1.2節でクッキーの製造の問題を考えました.これをもう一度取り上げてみることにします.クッキー製造に考慮した条件は,次の通りです.

1. 材料費の合計を小さくしたい.

2. 作る枚数は全部で 1000枚とする.

3. 準備時間は 40時間を越えることはできない.

4. 調理時間は 20時間を越えることはできない.

Page 2: | 0 T 1 Tksuzuki/teaching/ch4.pdf · 2009-06-29 · t $ 0 lp p 0 ¯` b ( :

106 第 4章 整数計画法

図表 4.1 クッキーの種類と費用,1セットあたりの作業時間チョコチップクッキー

ブ ラ ウニー

ショートブレッド

ジ ンジャークッキー

オ ー トミ ー ルクッキー

アーモンドビスコッティ

キャラメルバー

1枚あたり費用 25.1 25.4 20.4 17.9 21.2 23.1 26.2

1セット枚数 24 12 14 18 36 42 24

準備時間(分) 10 5 15 120 30 15 20

調理時間(分) 10 25 35 20 18 30 12

新たに図表 4.1の 7種類のクッキーを対象にして,この問題を定式化すると,

min. z = 602.5x1 + 305.0x2 + 285.0x3 + 322.5x4 + 763.2x5 + 970.2x6 + 628.8x7

s.t. 24x1 + 12x2 + 14x3 + 18x4 + 36x5 + 42x6 + 24x7 = 1000

10x1 + 5x2 + 15x3 + 120x4 + 30x5 + 15x6 + 20x7 ≤ 2400

15x1 + 25x2 + 35x3 + 20x4 + 18x5 + 30x6 + 12x7 ≤ 1200

xj ≥ 0, j = 1, . . . , 7

(4.1)

となりました.変数の対応関係は,以下の通りです1.

x1:チョコチップクッキーのセット数 x2:ブラウニーのセット数

x3:ショートブレッドのセット数 x4:ジンジャークッキーのセット数

x5:オートミールクッキーのセット数 x6:アーモンドビスコッティのセット数

x7:キャラメルバーのセット数

最適解は,

x1 = x2 = 0, x3 = 19.4, x4 = 14.3, x5 = 13.1, x6 = x7 = 0, z∗ = 20125.9

です.最適セット数から計算した作成枚数を図表 4.2(上限なしの行)に記しました.

図表 4.2 最適な作成枚数チョコチップクッキー

ブ ラ ウニー

ショートブレッド

ジ ンジャークッキー

オ ー トミ ー ルクッキー

アーモンドビスコッティ

キャラメルバー

上限なし 0 0 271.3 257.5 471.2 0 0

最大 250枚 3.4 0 246.6 250 250 250 0

整数条件あり 100 0 250 250 250 150 0

せっかく 7種類も作ることができるのに,最適解では 3種類しか作りません.また枚数をみると,多いものは他のクッキーの倍ちかく作ることになり,バランスがよくありません.そこで,どのクッキーも最大で 250枚とするように,xj ≤ 250, j = 1, . . . , 7と上限制約をおいて解いてみました.その結果,

x1 = 0.1, x2 = 0, x3 = 17.6, x4 = 13.9, x5 = 6.9, x6 = 6.0, x7 = 0, z∗ = 20659.53

11.1.2 節では,枚数を変数としました.

Page 3: | 0 T 1 Tksuzuki/teaching/ch4.pdf · 2009-06-29 · t $ 0 lp p 0 ¯` b ( :

4.1. 整数計画法 107

となります.作成枚数は,図表 4.2(最大 250枚の行)にあります.上限を設けたことにより,5種類のクッキーを作ることになりました.ショートブレッド,ジンジャークッキー,オートミールクッキー,アーモンドビスコッティの枚数のバランスはよいのですが,チョコチップクッキーの枚数だけが極端に少なくなっています.このような少ない枚数ならばまったく作らないか,あるいはもし作るならもう少し区切りのよい枚数を作りたいものです.これは,次のような条件として与えられます.

� 必ずしもすべてのクッキーを作る必要はない.ただし,作るならば,最低 100枚以上かつ 250

枚以下にする.

つまり,チョコチップクッキーを作らないという選択肢もある一方で,つくるなら最低 100枚以上250枚以下にしなければならないということです.それぞれのクッキーを何枚作るのかとは別に,そもそもそのクッキーを作るかどうか,ということも決定しなくてはならないことに注意してください.枚数を表すには,もとの問題と同じく xjという変数を利用するとして,作る/作らないという判断はどのように表せばよいでしょうか?

ひとつのアプローチは,作るクッキーの組合わせを総当たりで試すというものです.7種類のクッキーがあるので,総枚数の制限を考慮しなければ,128通りの組合わせがあります.作るクッキーの組合わせを求めてから,それぞれ何枚作るかを LPを解いて求めるとなると,128個の LP

を解かねばなりません.かりに 10種類の候補を考えて,そのすべての組合せを検討するとなると1024通りとなってしまいます.適切な定式化と,それに応じた解法を利用すれば,作る/作らないの判断と何枚作るかの判断

を同時に行うことが可能です.定式化には,枚数を表す変数 xjに加えて,作る/作らないの判断を表す変数 zj (j = 1, . . . , 7)を導入します.ただし,この変数は通常の変数と違って,値として 0と1しか取らないものとします.そして,zj = 0ならばクッキー jはつくらない,zj = 1ならばクッキー jをつくる,というように対応付けをしましょう.次の作業は,作る/作らないの判断 (zj = 1 or 0)と枚数の制約を関連づけることです.チョコ

チップクッキーで考えます.24x1がチョコチップクッキーを作る枚数です.我々が課したい対応関係は,

z1 = 0↔ 24x1 = 0

z1 = 1↔ 100 ≤ 24x1 ≤ 250

です.これを 1本の式にまとめるには,

100z1 ≤ 24x1 ≤ 250z1

とします.作る/作らないの判断と枚数の制約が関連づけられていることを確かめてください.以上をまとめると,問題は以下のように定式化できます.

min. z = 602.5x1 + 305.0x2 + 285.0x3 + 322.5x4 + 763.2x5 + 970.2x6 + 628.8x7

s.t. 24x1 + 12x2 + 14x3 + 18x4 + 36x5 + 42x6 + 24x7 = 1000

10x1 + 5x2 + 15x3 + 120x4 + 30x5 + 15x6 + 20x7 ≤ 2400

15x1 + 25x2 + 35x3 + 20x4 + 18x5 + 30x6 + 12x7 ≤ 1200

100z1 ≤ 24x1 ≤ 250z1, 100z2 ≤ 12x2 ≤ 250z2

100z3 ≤ 14x3 ≤ 250z3, 100z4 ≤ 18x4 ≤ 250z4

100z5 ≤ 36x5 ≤ 250z5, 100z6 ≤ 42x6 ≤ 250z6

100z7 ≤ 24x7 ≤ 250z7

xj ≥ 0, j = 1, . . . , 7

zj ∈ {0, 1}, j = 1, . . . , 7

(4.2)

Page 4: | 0 T 1 Tksuzuki/teaching/ch4.pdf · 2009-06-29 · t $ 0 lp p 0 ¯` b ( :

108 第 4章 整数計画法

計算した結果,最適解は次のようになりました.作成枚数は図表 4.2(整数条件ありの行)にあります.

z1 = 1 z2 = 0 z3 = 1 z4 = 1 z5 = 1 z6 = 1 z7 = 0

x1 = 4.2 x2 = 0 x3 = 17.9 x4 = 13.9 x5 = 6.9 x6 = 3.6 x7 = 0

演習問題 4.1

上の例題に,「作成するクッキーの種類は,4種類でなくてはならない」という条件が加わった場合,どのように定式化すればよいか.ただし,上限を 250枚から 350枚にかえるものとする.

4.1.2 整数計画問題の性質

線形計画問題

maximize∑n

j=1 cjxj

subject to∑n

j=1 aijxj = bi, i = 1, . . . ,m

xj ≥ 0, j = 1, . . . , n

(1.5)

に,整数条件を課した問題

maximize∑n

j=1 cjxj

subject to∑n

j=1 aijxj = bi, i = 1, . . . ,m

xj ≥ 0, j = 1, . . . , n

xj ∈ Z, j = 1, . . . , n

(4.3)

を (混合)整数計画問題 ((mixed) integer programming problem)といいます2.ここで,Zは整数の集合を表しています.線形計画問題 (1.5)と整数計画問題 (4.3)を比較してみましょう.問題 (1.5)の最適解 x†と問題

(4.3)の最適解 x∗は通常は等しくなりません.目的関数値で比較すると,最大化問題の場合は常に,

c>x† ≥ c>x∗

が成り立ちます.最小化問題であれば,不等号の向きは逆です.線形計画問題 (1.5)に整数条件が付け加わったため,(4.3)の制約領域が狭くなってしまったためと考えてください.一般に x†は実数値を取ります.これを四捨五入,切り上げ,切り下げなどによって整数値とし

ても,かならずしも x∗ が得られるわけではありません.次の例で確かめてみましょう.線形計画問題

maximize x1 + x2 + x3

subject to 0.27x1 + 0.4x2 + 3x3 ≤ 3.8

x1 + 0.13x2 ≤ 3

0.11x1 + x2 − x3 ≤ 1

xj ≥ 0, j = 1, . . . , 3

(4.4)

の最適解は,

x†1 = 2.80, x

†2 = 1.51 x

†3 = 0.81

2厳密には,(混合) 整数線形計画問題というべきですが,普通はこれで通用します.

Page 5: | 0 T 1 Tksuzuki/teaching/ch4.pdf · 2009-06-29 · t $ 0 lp p 0 ¯` b ( :

4.1. 整数計画法 109

です (小数点第 3位で四捨五入).一方,(4.4)に整数条件を加えた問題

maximize x1 + x2 + x3

subject to 0.27x1 + 0.4x2 + 3x3 ≤ 3.8

x1 + 0.13x2 ≤ 3

0.11x1 + x2 − x3 ≤ 1

xj ≥ 0, j = 1, . . . , 3

xj ∈ Z, j = 1, . . . , 3

(4.5)

の最適解は,

x∗1 = 3, x∗2 = 0 x∗3 = 0

です.単純な丸めの操作では最適解は得られないことがわかります.もし,x† がたまたま整数条件を満たしているならば,x† = x∗ をみたします3.

4.1.3 計算時間

整数条件をつけだだけで問題を解く難しさは飛躍的に増大します.これを実感してもらうために,数値実験を行ってみました.通常の LP問題とそれに整数条件を加えた IP問題を同じ環境で解き,計算時間を比較しました.実験の条件は以下の通りです.

� 制約式の本数は 40本に固定した.

� 変数の数を,20 50 100 200 400 600 800 と増やして問題を作った.

� 目的関数,係数行列は区間 [0, 1]上の一様乱数を用いた.

� 問題が実行不可能にならないように,右辺は区間 [1, 2]上の一様乱数を用いた.

� 同じサイズの問題を 10回解き4,平均値を求めた.

� 計算機環境は,OS: Linux 2.2.20, CPU: Intel Pentium 4 2.53GHz

� ソルバは lp solve (Version 4.0)を用いた.

結果を表とグラフにしました (図表 4.3,4.4参照).IPは,問題のサイズが多くなるにつれて急激に計算時間が増加していることがわかります.一方,LPの計算時間の増加は非常に緩やかです.両者の計算時間は文字通り桁違いに異なることをよく認識してください.

4.1.4 参考:分枝限定法

分枝限定法 (branch and bounding method)と呼ばれる手法を用いて整数計画問題を解く方法を簡単に紹介しましょう.

3ただし,x†,x∗ ともに一意な最適解であるとします.4変数の数が 800 のとき,IP は 1 回しか解いていません.

Page 6: | 0 T 1 Tksuzuki/teaching/ch4.pdf · 2009-06-29 · t $ 0 lp p 0 ¯` b ( :

110 第 4章 整数計画法

図表 4.3 LPと IPの計算時間 (秒)

変数の数 20 50 100 200 400 600 800

線形計画問題1回目 0.020 0.033 0.063 0.133 0.048 0.170 0.322

2回目 0.112 0.064 0.078 0.043 0.048 0.113 0.223

3回目 0.042 0.022 0.091 0.113 0.065 0.157 0.172

4回目 0.022 0.011 0.045 0.054 0.049 0.245 0.194

5回目 0.010 0.074 0.053 0.120 0.050 0.161 0.160

6回目 0.050 0.024 0.079 0.051 0.048 0.261 0.165

7回目 0.020 0.064 0.089 0.113 0.047 0.166 0.303

8回目 0.102 0.020 0.040 0.024 0.047 0.088 0.260

9回目 0.041 0.012 0.064 0.115 0.047 0.175 0.177

10回目 0.020 0.053 0.078 0.024 0.081 0.081 0.163

平均 0.044 0.038 0.068 0.079 0.053 0.162 0.214

整数計画問題1回目 0.02 0.15 0.31 2.16 29.55 380.60 1270.03

2回目 0.01 0.09 0.60 3.76 35.36 696.63 |

3回目 0.01 0.07 0.91 2.55 20.84 257.85 |

4回目 0.02 0.16 0.60 6.49 23.09 89.96 |

5回目 0.01 0.12 0.18 2.43 27.45 244.88 |

6回目 0.01 0.16 0.43 3.58 13.23 568.30 |

7回目 0.02 0.05 0.87 3.33 18.73 544.46 |

8回目 0.01 0.11 0.70 3.89 25.06 394.25 |

9回目 0.01 0.17 0.46 3.48 34.96 781.69 |

10回目 0.01 0.11 0.65 3.12 21.65 246.77 |

平均 0.013 0.119 0.571 3.479 24.992 420.539 1270.03

Page 7: | 0 T 1 Tksuzuki/teaching/ch4.pdf · 2009-06-29 · t $ 0 lp p 0 ¯` b ( :

4.1. 整数計画法 111

図表 4.4 LPと IPの計算時間 (平均値)の比較

0 100 200 300 400 500 600 700 8000

200

400

600

800

1000

1200

1400

n

time(

sec)

LPIP

P0

max c>x

s.t. Ax = b

l0j ≤ xj ≤ u0j , j = 1, . . . , n

x ∈ Zn

(4.6)

問題 P0を解くことを考えます.ただし,Znは n次元の整数ベクトルの全体を表し,lの要素に −∞,uの要素に∞が含まれていてもよいものとします.緩和問題

P0の整数条件を取り除いた問題を考えましょう.これを P0の緩和問題と呼びます.�P0とおきました.問題 �P0 は無限解を持たないと仮定します.

�P0

max c>x

s.t. Ax = b

l0j ≤ xj ≤ u0j , j = 1, . . . , n

(4.7)

�P0はもちろん線形計画問題なので,解くのは容易です.緩和問題 �P0を解いた結果,最適解が整数条件を満たしているならば,問題 P0 が解けたことになります.また,問題 �P0 が実行不可能ならば,当然問題 P0 も実行不可能です.上記以外の場合,問題 �P0 は最適解 (x0

1, . . . , x0n)を生成し,しかもその要素のいずれかは整数

ではないはずです.ここでは,x0s が整数でないものとしましょう.

子問題の生成

bξcで ξより小さい整数のなかで最大のものを表します (小数部分の切り捨てです).

Page 8: | 0 T 1 Tksuzuki/teaching/ch4.pdf · 2009-06-29 · t $ 0 lp p 0 ¯` b ( :

112 第 4章 整数計画法

次のようにして,P0 の子問題 P1 と P1 を生成します.制約領域を,x0s の前後で 2分するイ

メージです.

P1

max c>x

s.t. Ax = b

l0j ≤ xj ≤ u0j , j = 1, . . . , n; j 6= s

ls ≤ xs ≤ bx0sc

x ∈ Zn

P2

max c>x

s.t. Ax = b

l0j ≤ xj ≤ u0j , j = 1, . . . , n; j 6= s

bx0sc+ 1 ≤ xs ≤ u0

s

x ∈ Zn

問題 P1と P2の最適解のいずれかが,問題 P0の最適解でなくてはなりません.そこで,問題P1と P2の最適解を求めることします.そこで,P0から P1と P2を生成したのと同様の操作 (緩和問題を解き,適当な非整数解の前後で領域を分割)で子問題を生成します.これを分枝操作と呼びます.分枝操作を繰り返していけば,子問題の制約領域はどんどん縮小していき,最終的に整数値だけの解を得ることができるようになるはずです.しかし,この操作だけで問題を解こうとするならば,結局すべての可能な整数値の組合せを試すことになるので,とうてい実用的とはいえません.不必要な分枝操作をさける工夫が必要になります.

限定操作

子問題 Pj の緩和問題 �Pj を解いたとき,あり得るケースは 3種類です.

case 1) �Pj が実行不可能なとき.

この場合,その問題から子問題は生成しない.

case 2) �Pj が最適解を持ち,しかも整数条件を満たすとき.

もし,この解が,現在得られている暫定解よりもよい最適値を与えるなら,これを新たな暫定解とする.もし,そうでないならば,暫定解は変更しない.いずれの場合にせよ,新たな子問題は生成しない.

case 3) �Pj が最適解を持つが,整数条件を満たさないとき.

この問題の最適解を �xjとし,暫定解を x̂とする.c>�xj ≤ c>x̂ならば,これ以上,�Pjから子問題を生成してもよい解が得られることはないので,子問題は生成しない.

c>�xj > c>x̂ならば,よい解が得られる可能性があるので,さらに,子問題を生成して行く.

分枝限定法では,最悪の場合でも,整数解の個数が有限であれば有限回で終了します (実行可能領域が有界であればこの条件は満たされます).分枝限定法は,限定操作を工夫することによって探索する領域をいかに狭めることができるか

に,その効率性がかかっています.これらを適切に処理しないと最適解への収束が遅くなってしまうでしょう.

Page 9: | 0 T 1 Tksuzuki/teaching/ch4.pdf · 2009-06-29 · t $ 0 lp p 0 ¯` b ( :

4.1. 整数計画法 113

図表 4.5 分枝限定法の概念図

P0

P1

P2: ˚‹»Þ⁄»⁄”

P11: …´„ÔÉÔ†˜˙‰

P12P121: …´„ÔÉÔ†˜˙‰

P122: »ˆ˜Œ†ò

実務的には必ずしも厳密な最適解でなくてもある誤差に収まる範囲で最適性が保証されれば充分です.暫定解を x̂とし,その時点で得られている緩和問題最適解のうち最も良い目的関数値を与えるものを �xとすると,|c>x̂ − c>�x| ≤ εとなった時点で終了するという方法が考えられます.この場合,誤差 εの範囲で最適性が保証できます.

分枝限定法アルゴリズムの適用例

次の 2変数の整数計画問題を考えます.∣∣∣∣∣∣∣∣∣∣∣∣∣∣∣

max 5x1 + 2x2

s. t. 6x1 + 2x2 ≤ 15

4x1 + 4x2 ≤ 15

− x1 + 2x2 ≤ 5

x1, x2 ≥ 0

x1, x2 ∈ Z

(4.8)

(4.8)の緩和問題は

P0

∣∣∣∣∣∣∣∣∣∣∣∣

max 5x1 + 2x2

s. t. 6x1 + 2x2 ≤ 15

4x1 + 4x2 ≤ 15

− x1 + 2x2 ≤ 5

x1, x2 ≥ 0

(4.9)

です.通常の線形計画法のアルゴリズムを用いて解くと,P0 の最適解 (x01, x0

2)は(x0

1 x02

)=(1.875 1.875

)となり,最適値 z0 = 13.125 です.これは整数条件を満たしていないので,(4.8)の最適解ではありません.

Page 10: | 0 T 1 Tksuzuki/teaching/ch4.pdf · 2009-06-29 · t $ 0 lp p 0 ¯` b ( :

114 第 4章 整数計画法

図表 4.6 問題 (4.8)とその緩和問題

0 1 2 3

0

1

2

3

x1

x 2

次に,P0を親問題とする子問題 P1,P2を生成します.x01 = 1.875に着目して,この値の前後

の整数で制約領域を分割します.x ≥ 2と x1 ≤ 1が付け加わる制約です.

P1

∣∣∣∣∣∣∣∣∣∣∣∣∣∣∣

max 5x1 + 2x2

s. t. 6x1 + 2x2 ≤ 15

4x1 + 4x2 ≤ 15

− x1 + 2x2 ≤ 5

x1 ≥ 2

x1, x2 ≥ 0

P2

∣∣∣∣∣∣∣∣∣∣∣∣∣∣∣

max 5x1 + 2x2

s. t. 6x1 + 2x2 ≤ 15

4x1 + 4x2 ≤ 15

− x1 + 2x2 ≤ 5

x1 ≤ 1

x1, x2 ≥ 0

(4.10)

P1 の最適解と最適値はそれぞれ

P1 :(x1

1 x12

)=(2 1.5

)z1 = 13

です.P2は後で計算することにして,P1から P11と P12を生成します.x12 = 1.5に着目して,P1

Page 11: | 0 T 1 Tksuzuki/teaching/ch4.pdf · 2009-06-29 · t $ 0 lp p 0 ¯` b ( :

4.1. 整数計画法 115

図表 4.7 P1 と P2 の制約領域

0 1 2 3

0

1

2

3

x1

x 2

P1

P2

に x2 ≥ 2と x2 ≤ 1を加えます.

P11

∣∣∣∣∣∣∣∣∣∣∣∣∣∣∣∣∣∣

max 5x1 + 2x2

s. t. 6x1 + 2x2 ≤ 15

4x1 + 4x2 ≤ 15

− x1 + 2x2 ≤ 5

x1 ≥ 2

x2 ≥ 2

x1, x2 ≥ 0

P12

∣∣∣∣∣∣∣∣∣∣∣∣∣∣∣∣∣∣

max 5x1 + 2x2

s. t. 6x1 + 2x2 ≤ 15

4x1 + 4x2 ≤ 15

− x1 + 2x2 ≤ 5

x1 ≥ 2

x2 ≤ 1

x1, x2 ≥ 0

(4.11)

P11 は,実行不可能です.一方,P12 の最適解と最適値はそれぞれ

P12 :(x12

1 x122

)=(2.17 1

)z12 = 12.83

となります.P11 は実行不可能なので,これ以上分枝操作は行いません.P12 から,P121 と P122

Page 12: | 0 T 1 Tksuzuki/teaching/ch4.pdf · 2009-06-29 · t $ 0 lp p 0 ¯` b ( :

116 第 4章 整数計画法

を生成します.

P121

∣∣∣∣∣∣∣∣∣∣∣∣∣∣∣∣∣∣

max 5x1 + 2x2

s. t. 6x1 + 2x2 ≤ 15

4x1 + 4x2 ≤ 15

− x1 + 2x2 ≤ 5

x1 ≥ 3

x2 ≤ 1

x1, x2 ≥ 0

P122

∣∣∣∣∣∣∣∣∣∣∣∣∣∣∣∣∣∣

max 5x1 + 2x2

s. t. 6x1 + 2x2 ≤ 15

4x1 + 4x2 ≤ 15

− x1 + 2x2 ≤ 5

2 ≤ x1 ≤ 2

x2 ≤ 1

x1, x2 ≥ 0

(4.12)

P121 は,実行不可能です.P122 の最適解と最適値はそれぞれ

P122 :(x122

1 x1222

)=(2 1

)z122 = 12

となり,はじめて整数条件を満たす解が得られました.(2 1

)を暫定解として使って,限定操作

を行うことにします.まだ,探索を行っていない領域をチェックしましょう.P2 を解いた結果は,次の通りです.

P2 :(x2

1 x22

)=(1 2.75

)z2 = 10.5

z2 = 10なので,現在の暫定解によって得られる値 12を下回っています.したがって,これ以上,P2から子問題を生成しても,暫定解より良い解を得ることはできません.この段階で暫定解

(2 1

)がもとの問題 (4.8)の最適解であることがわかりました.

演習問題 4.2

上記の例で,P0 から子問題を生成する際に,x01 に着目した.x0

2 に着目した場合,どのような子問題を生成すべきか.

4.2 整数計画法の適用例整数計画問題として定式化される問題の例をいくつか見てみましょう.

4.2.1 出店計画

あるスーパーが新店舗を開設することを計画しています.各候補地における新店舗の設置費用と見込まれる収益は,図表 4.8のように与えられているものとします.このスーパーが出店計画に

図表 4.8 新規の出店費用と予想収益 (百万円)

候補地 出店費用 予想収益候補地 1 70 100

候補地 2 90 110

候補地 3 50 60

候補地 4 120 150

計上している予算が 200(百万円)であるとき,どの候補地に出店するのが最も収益が高くなるで

Page 13: | 0 T 1 Tksuzuki/teaching/ch4.pdf · 2009-06-29 · t $ 0 lp p 0 ¯` b ( :

4.2. 整数計画法の適用例 117

しょうか.ただし,各候補地は十分距離が離れているので,同時に出店しても相互に影響はないものとします.候補地 j (j = 1, . . . , 4)に出店する/しないという判断を 0-1変数 xj で表すことにしましょう.

もし,xj = 1なら候補地 jに出店することを,xj = 0 なら出店しないことを意味するとします.この場合,

max 100x1 + 110x2 + 60x3 + 150x4

s.t. 70x1 + 90x2 + 50x3 + 120x4 ≤ 200

xj ∈ {0, 1}, j = 1, . . . , 4

(4.13)

と定式化することで最適な出店計画が得られます.問題 (4.13)の形をした問題をナップサック問題 (napsack problem)とよびます.ナップサック

問題も代表的な組み合わせ最適化問題のひとつです.もともとは,ナップサックにアイテムを詰めていく際に,総容量の制限以内で以下に役立つアイテムを選ぶか,というところからついた名前です.ナップサック問題は,その特殊な構造を利用した解法がいくつも開発されていて,比較的大型の問題も解くことができます.

(4.13)の場合は各候補地への出店が独立に行えると仮定しておきました.では,ある地域の出店がほかの地域への出店に影響を与えるような場合はどのような制約を課すべきでしょうか.引き続きスーパーの出店を例に考えてみます.このスーパーが追加的な調査を行ったところ,新たな候補地が 2ヶ所得られました.ところが,

候補地 5は候補地 1と商圏が重なり,候補地 6は候補地 4と商圏が重なるため,候補地 1と候補地 5,および,候補地 4と候補地 6は同時に出店しない方針を取ることにしました.さらに店舗だけでなく,状況によっては倉庫も必要になることがわかりました.具体的にいうと,候補地 1,2,5に出店をする場合は候補地 7に,候補地 3,4,6に出店をする場合は候補地 8に,倉庫が作らねばなりません.(図表 4.9).

図表 4.9 追加された候補地と倉庫候補地 出店費用 予想収益候補地 5 100 120

候補地 6 40 75

倉庫 7 20 |

倉庫 8 15 |

今度の例では,候補地間に排他的な関係と依存的な関係が設定されています.排他的な関係とは,両者を同時には満たせない関係です.候補地 1と 5には同時に出店できない,がそれにあたります.依存関係は,一方の決定が他方の決定によって決まる,ことを指します.倉庫の建設は店舗の出店の有無によって決まるという身で,前者は後者に依存してるのです.以上のような排他的な条件と依存的なを考慮すると以下のような定式化になります.

max 100x1 + 110x2 + 60x3 + 150x4 + 120x5 + 75x6

s.t. 70x1 + 90x2 + 50x3 + 120x4

+100x5 + 40x6 + 20x7 + 15x8 ≤ 200

x1 + x5 ≤ 1, x4 + x6 ≤ 1

x1 − x7 ≤ 0 x2 − x7 ≤ 0

x5 − x7 ≤ 0 x3 − x8 ≤ 0

x4 − x8 ≤ 0 x6 − x8 ≤ 0

xj ∈ {0, 1}, j = 1, . . . , 8

(4.14)

Page 14: | 0 T 1 Tksuzuki/teaching/ch4.pdf · 2009-06-29 · t $ 0 lp p 0 ¯` b ( :

118 第 4章 整数計画法

問題 (4.13)の最適解は,

(x1, x2, x3, x4) = (1, 0, 0, 1)

です.問題 (4.14)の最適解は,

(x1, x2, x3, x4, x5, x6, x7, x8) = (1, 0, 1, 0, 0, 1, 1, 1)

です.

演習問題 4.3

容量が 3単位のナップサックに,表 4.10で与えられるようなアイテムを選んで,アイテムから得られる効用の合計が最大になるように詰めることを考えます.ただし,どの種類のアイテムも一つまでしか入れることはできません.

図表 4.10 アイテムの容積と効用アイテム 1 アイテム 2 アイテム 3 アイテム 4

容積 2.5 1.0 0.8 1.1

効用 3.01 1.1 0.96 1.1

1. すべてのアイテムについて単位容積あたりの効用を計算し,単位容積あたりの効用が大きい順に詰めていく場合に得られる解を求めなさい.

2. アイテムの可能な組合わせを全て列挙することにより最適解を求めなさい (列挙法).得られた最適解を 1の解と比較しなさい.

一般に,1の方法5では最適解を得られることは保証されません.しかし,初期解の生成法としてはよく使われます.

4.2.2 検査機器の購入

工場で新しい製品を製造することになりました.最終段階での製品の検査のための機器を購入することを検討しています.この製品は出荷前に 8種類の項目について検査を行わねばなりません.導入の対象としている検査機器はいずれも 1 台で複数の項目工程に対応してますが,1台だけですべての項目を処理することはできません.対応できる検査項目と機械の値段は表 4.11 の通りです.○がついているのが,その機械が処理できる項目です.

図表 4.11 工程と機械の対応関係工程 価格

1 2 3 4 5 6 7 8 (百万円)

機械 A ○ ○ ○ ○ ○ 20

機械 B ○ ○ 18

機械 C ○ ○ ○ ○ ○ ○ 32

機械 D ○ ○ ○ ○ 9

機械 E ○ ○ ○ ○ ○ 22

5何らかの基準によって候補に順位をつけて並べ,その順番にしたがって容量を超えない範囲で詰める方法は欲張法(greedy method) とよばれています.

Page 15: | 0 T 1 Tksuzuki/teaching/ch4.pdf · 2009-06-29 · t $ 0 lp p 0 ¯` b ( :

4.2. 整数計画法の適用例 119

どの機械を導入すればもっとも安い費用ですべての検査を行うことができるでしょうか.ただし,機械の性能の差は無視できるものとします.この問題でも,やはり導入する/しないの判断を変数 0{1変数 xj (j ∈ A,B, C, D, E)で表すと

よいでしょう.あとは,すべての工程がカバーできるように制約を作るだけです.

min 20xA + 18xB + 32xC + 9xD + 22xE

s.t. xA + xC + xD + xE ≥ 1

xA + xB ≥ 1

xC + xE ≥ 1

xA + xC + xE ≥ 1

xC + xD + xE ≥ 1

xA + xC ≥ 1

xA + xD + xE ≥ 1

xB + xC + xD ≥ 1

xj ∈ {0, 1}, j ∈ {A,B, C, D, E}

最適解は,xA = xD = xE = 1,xB = xC = 0です.この問題は割り当て問題の一種です.割り当て問題では,すでに 2.6.2節 (69ページ)で掃除の

分担を例にとって論じました.2.6.2節の場合,2部グラフを利用して定式化を行い,最終的に LP

に帰着させることができます.しかし,今回の例は,LPとしては定式化することはできません.この形式の問題は,集合被覆問題 (set covering problem)と呼ばれています.

演習問題 4.4

12の街区からなる大規模ニュータウンの建設計画があります.住民の共有施設として,地区センターをいくつか設置することになっています.デベロッパーは,できるだけ施設の利用度に差が出ないような設置場所を選定することにしました.調査の結果,6個所の候補地が得られています.各候補地に施設を設置した際に,どの地区の住民が利用可能になるかは,表 4.12に示した通りです.設置場所によって,施設自体の大きさやアクセスの容易さに違いがあるので,利用可のな地区の数は異なっていることに注意してください.

図表 4.12 候補地と利用可能な地区候補地 利用可能な地区 設置費用

A 第 1,2,3,4, 8地区 3.0億円B 第 3,4地区 0.9億円C 第 5,6,7地区 1.5億円D 第 8,10,11地区 2.1億円E 第 4,9,10地区 1.8億円F 第 6,11, 12地区 1.4億円

設置の条件は以下の通りです.

� 施設の総設置費用を最小にする

� すべての街区の住民が少なくともひとつは共有施設を利用できるようにする

� 施設の数は,3個もしくは 4個とする

最適な施設配置を求める問題を定式化しなさい.

Page 16: | 0 T 1 Tksuzuki/teaching/ch4.pdf · 2009-06-29 · t $ 0 lp p 0 ¯` b ( :

120 第 4章 整数計画法

4.2.3 取引単位制約と固定費用

現実の商取引では,常に任意の量を売買できるとは限りません.たとえば,スーパーマーケットで厳密に 1.00001kgの重さの砂糖を買うことは不可能でしょう.普通は,適当な取引単位が存在するからです.砂糖であれば,おそらく,1kg入り,500g入り,200g入りのパックしか売っていないでしょう6.ここでは取引単位を明示的に取り込んだモデルを考えることにします.表 (4.13)にあるような取引条件を持つ商品を考えます.与えられた予算内で,効用を最大化す

るには,どのような買い方をすべきでしょうか.

図表 4.13 商品の取引条件商品 1 商品 2

一個あたりの価格 20円 50円取引単位 100個 80個予算 10万円

商品 1の購入量を x1,商品 2の購入量を x2 とし,そのときの効用が U(x1, x2)であるとします.効用を最大にする買い方を求める問題を定式化すると以下のようになります.

max U(x1, x2)

s.t. 20x1 + 50x2 ≤ 100000

x1 = 100z1

x2 = 80z2

xj ≥ 0 j = 1, 2

zj ∈ Z j = 1, 2

さらに取引の条件として,固定費用が存在する場合を考えてみましょう.すなわち,もし取引を行わないなら必要ないが,1個でも買うと生じてしまうような費用です.今回の例では,商品 1,2のどちらについても固定費用を 500円とします.この場合は,

max U(x1, x2)

s.t. 20x1 + 50x2 + 500f1 + 500f2 ≤ 100000

x1 = 100z1

x2 = 80z2

zj ≤ Mfj, j = 1, 2

xj ≥ 0, j = 1, 2

zj ∈ Z, j = 1, 2

fj ∈ {0, 1}, j = 1, 2

と定式化できます.ただし,Mは充分大きな数です (この場合であれば,M ≥ 50 であればよい).制約領域には,z1 = 0,f1 = 1 の場合が含まれますが,効用関数が増加関数なら問題はありません.

4.2.4 参考:比例的でない取引費用

証券の取引には,取引費用がかかります.取引費用は,証券の取引量が一定単位数に達すると,一単位当たりの費用が安くなるように設定されています.これを関数として表すと,図表 4.14の

Page 17: | 0 T 1 Tksuzuki/teaching/ch4.pdf · 2009-06-29 · t $ 0 lp p 0 ¯` b ( :

4.2. 整数計画法の適用例 121

図表 4.14 取引費用transacton cost

quantity:q1

q2

q3

x

3d

2d

d 1

ような区分的線形関数となります7.24ページで紹介した,キャッシュフローマッチング問題に取引費用を導入してみましょう.ただし,簡単化のために期間は 1 期間とします.決定変数は,xj,vで,それぞれ債券 jの購入単位数と資産の総価値を表しています.パラメー

タは,負債 L,償還額 (含むクーポン)cj,価格 pj です.取引費用がないときは,次のように定式化されます.

min∑n

j=1 pjxj

s.t.∑n

j=1 cjxj+ ≥ L

xj ≥ 0, j = 1, . . . , n

目的関数は購入した債券の合計の価格です.ここに取引費用を含めましょう.なお,債券の購入量には上限 q3 を設けておきます.債券 jの取引にまつわる費用を yjとします.また,xjがどの区間に存在するかを表す 0-1変数

zj0,zj1,zj2 と,実数変数 λj0,λj1,λj2,λj3 を導入します.

6ものによっては計り売りもあります.最近はあまり見かけなくなりました7最近,手数料の自由化とネット取引の増加で,個人向けの売買では定額の手数料ですむ場合も増えてきました.

Page 18: | 0 T 1 Tksuzuki/teaching/ch4.pdf · 2009-06-29 · t $ 0 lp p 0 ¯` b ( :

122 第 4章 整数計画法

min∑n

j=1 pjxj +∑n

j=1 yj

s.t.∑n

j=1 cjxj+ ≥ L

xj = q1λj1 + q2λj2 + q3λj3, j = 1, . . . , n

yj = d1λj1 + d2λj2 + d3λj3, j = 1, . . . , n

λj0 + λj1 + λj2 + λj3 = 1, j = 1, . . . , n

λ0j ≤ z1j, j = 1, . . . , n

λ1j ≤ z1j + z2j, j = 1, . . . , n

λ2j ≤ z2j + z3j, j = 1, . . . , n

λ3j ≤ z3j, j = 1, . . . , n

z1j + z2j + z3j = 1, j = 1, . . . , n

xj ≥ 0, j = 1, . . . , n

yj ≥ 0, j = 1, . . . , n

λ0j, λ1j, λ2j, λ3j ≥ 0, j = 1, . . . , n

z1j, z2j, z3j ∈ {0, 1}, j = 1, . . . , n

ここで使われたテクニックは,複雑な非凸型の問題を整数計画問題で近似する際に用いられます.

4.2.5 アルバイトのスケジュール

あるコンビニエンスストアを例にとって,スケジューリングを考えてみましょう.この店は,24時間営業で,雇用契約を結んでいるパートとアルバイトは 24 名です.勤務時間帯は,次のような5つの時間帯にわかれています.

朝勤:8時~13時 昼勤:13時~17時 夕勤:17時~22時

夜勤:22時~5時 早朝勤:5時~8時

従業員の勤務スケジュールは,店舗側と従業員の双方の事情を調整して,2週間ごとに作成されます.スケジュールを組むには,以下の条件を考慮しなくてはなりません.

� 従業員の勤務可能日:

従業員には,学生や家庭の主婦も少なくないため,出勤できない日や時間帯もあります.あらかじめ出勤可能な日時を決めてもらい,それ以外には割り当てないようにします.

� 勤務時間の上限・下限:

従業員によっては,一定額の給与を得るため,一定の勤務時間以上働くことを希望します.逆に一定の勤務時間を超えないようにしなければならない人もいます.

� シフトの連続性:

例えば,13時に入って 22時まで,2つのシフトを通して働くことを希望する人がいます.一方で,17時に入って翌朝 5時まで (2シフト)働きたいが,8時までは繋げたくないという場合もあります.

� 勤務時間の間隔:

人によっては,ある日が終日勤務可能であっても,その日に朝勤を働いてからいったん勤務を終わり,再度同じ日に夕勤を行うというように割り当てはされたくないという場合があります.この店では,いったん勤務を終えたら,次の勤務までの時間にどの程度必要かを従業員ごとに申告してもらっています.

Page 19: | 0 T 1 Tksuzuki/teaching/ch4.pdf · 2009-06-29 · t $ 0 lp p 0 ¯` b ( :

4.2. 整数計画法の適用例 123

� 必要従業員数:

客の入りは,曜日や時間帯ごとに異なるので,それぞれの場合に応じて必要な人員があらかじめ見積もられています.

� 新人教育:

経験が浅い従業員には,ベテランの人がサポートしてあげることになっています.そのような新人の配置は,教育役が勤まる人の予定とあわせて決めなくてはなりません.

� 予算:

勤務歴と時間帯によって,時給がかわります.給与総額が予算におさまるように全体の割り当てを決める必要があります.

図表 4.15 必要人数とアルバイトの出勤可能日 (1が可,0が不可)

日付 7/5 Sun. 7/6 Mon. 7/18 Sat.

シフト 朝 昼 夕 夜 早 朝 昼 夕 夜 早 · · · 朝 昼 夕 夜 早シフト番号 1 2 3 4 5 6 7 8 9 10 66 67 68 69 70

勤務時間 5 4 5 7 3 5 4 5 7 3 · · · 5 4 5 7 3

必要人数 2 3 3 2 2 3 3 3 2 2 2 3 3 3 2

従業員 A 1 1 1 0 0 0 0 1 1 1 1 0 0 0 1

従業員 B 1 1 1 0 0 1 1 1 0 0 1 1 1 0 0

従業員 C 0 0 1 1 1 0 0 0 0 0 1 1 1 1 1

従業員 D 0 0 0 1 1 0 0 0 1 1 0 0 0 1 1

従業員 E 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1...

...

従業員W 0 0 1 1 0 0 0 1 1 0 0 0 1 1 0

従業員 X 1 0 0 0 0 1 1 0 0 0 1 0 0 0 0

図表 4.16 従業員の労働条件労働時間 最大連続 最低勤務 時給 新 教育下限 上限 勤務時間 時間間隔 増分 人 係可

従業員 A 40 70 12 12 50 { 1

従業員 B 70 100 8 12 80 { 1

従業員 C 20 50 5 12 30 { {

従業員 D 10 40 5 12 0 { {

従業員 E 10 70 5 12 0 { {...

...

従業員W 10 50 8 12 -50 1 {

従業員 X 10 50 8 12 -50 1 {

上記の条件をまとめると,図表 4.15,4.16のようになります.これらの条件を考慮して,スケジューリングを決める問題を定式化していきましょう.従業員 iの第 jシフトの勤務の有無を表す

Page 20: | 0 T 1 Tksuzuki/teaching/ch4.pdf · 2009-06-29 · t $ 0 lp p 0 ¯` b ( :

124 第 4章 整数計画法

決定変数として,xij (i = A,B, · · · , X; j = 1, 2, . . . , 70)を用意します.xi,j は 0-1変数で,

xij =

{1, 従業員 iが第 jシフトに勤務する

0, 従業員 iが第 jシフトに勤務しない(4.15)

と定義します.xA1 = 1ならば,7月 5日の朝勤に Aさんが割り当てられることを意味します.勤務が不可能なシフトは,単純にその割り当てを表す変数の値を 0に設定することで表せます.7月5日に Aさんは夜・早朝勤ができないので,

xA4 = 0, xA5 = 0

とおくことになります8.以下,他の日,他の従業員についても同様です.勤務時間の上下限については,以下の不等式で表されます.朝,昼,夕,夜,早朝勤の勤務時

間がそれぞれ,5,4,5,7,3時間であることに注意してください.Aさんの 2週間の総勤務時間が 40時間以上 70時間以内なので,

5xA1 + 4xA2 + 5xA3 + 7xA4 + 3xA5 + 5xA6 + 4xA7 + · · ·+ 7xA69 + 3xA70 ≥ 40

5xA1 + 4xA2 + 5xA3 + 7xA4 + 3xA5 + 5xA6 + 4xA7 + · · ·+ 7xA69 + 3xA70 ≤ 70(4.16)

を満たさなくてはなりません.シフトの連続性の条件はどうなるでしょうか.Aさんは,最大 12時間連続で働いてもよいと考

えています.逆に言えば,13時間以上となるシフトの連続は不可ということです.例えば,朝+昼+夕という勤務は割り当てられません.昼+夕+夜,夕+夜+早朝も同様です.これらは,次のような不等式にまとめられます.

5xA1 + 4xA2 + 5xA3 ≤ 12, 4xA2 + 5xA3 + 7xA4 ≤ 12,

5xA3 + 7xA4 + 3xA5 ≤ 12, 7xA4 + 3xA5 + 5xA6 ≤ 12,

3xA5 + 5xA6 + 4xA7 + 5xA8 ≤ 12 5xA6 + 4xA7 + 5xA8 ≤ 12

...

4xA67 + 5xA68 + 7xA69 ≤ 12, 5xA68 + 7xA69 + 3xA70 ≤ 12

(4.17)

最低勤務時間間隔は,可能な割り当てはなにかという観点から見てみることにします.Aさんの場合,いったん勤務を離れたら,それが少なくとも 12時間続く必要があります.Aさんが 7月 5日の朝勤につき,昼勤には割り当てられていないならば,昼,夕,夜勤にはつけません.これは,次の不等式によって表すことができます.

(1 − xA2) + (1 − xA3) + (1 − xA4) ≥ 3(xA1 − xA2)

朝勤をして (xA1 = 1),昼勤をしない (xA2 = 0)場合,つまりいったん勤務を離れた場合に,右辺の値は 3となります.その場合,左辺を満たすのは,昼・夕・夜勤をしない場合 (xA2 = xA3 = xA4 = 0)

に限ります.朝勤をして (xA1 = 1),昼勤もする (xA2 = 1)場合は,右辺は 0となるので左辺はどのような組み合わせでも構いません.

8別のやり方として,xA4,xA5 をすべて削除してしまうことで対応できます.

Page 21: | 0 T 1 Tksuzuki/teaching/ch4.pdf · 2009-06-29 · t $ 0 lp p 0 ¯` b ( :

4.2. 整数計画法の適用例 125

これをすべてのシフトについて表すと以下の様になります.

(1 − xA2) + (1 − xA3) + (1 − xA4) ≥ 3(xA1 − xA2)

(1 − xA3) + (1 − xA4) ≥ 2(xA2 − xA3)

(1 − xA4) + (1 − xA5) + (1 − xA6) ≥ 3(xA3 − xA4)

...

(1 − xA68) + (1 − xA69) ≥ 2(xA67 − xA68)

(4.18)

となります.本来,最後の 3つのシフトに関して勤務時間の間隔を考慮するためには,次の期の勤務も考慮しなくてはいけませんが,これは,次の期の計画で対処することにしましょう.

Aさん以下 Xさんまでのすべての従業員に (4.16),(4.17),(4.18)と同様な制約式を作る必要があります.さらに,Wさんの場合には別の条件式が必要です.Wさんは新人なので,必ず誰か教育係がつかねばなりません.今,教育係は,A,B,G,Hさんであるとします.そうすると,新人の勤務に教育係がつくという条件は,

xW1 ≤ xA1 + xB1 + xG1 + xH1,

...

xW70 ≤ xA70 + xB70 + xG70 + xH70

(4.19)

となります.同じく,新人である Xさんについても同様です.店舗側の条件も定式化しましょう.必要人数については,

xA1 + xB1 + · · ·+ xX1 ≥ 2

xA2 + xB2 + · · ·+ xX2 ≥ 3

· · ·xA70 + xB70 + · · ·+ xX70 ≥ 2

(4.20)

となります.予算は,超過分が一定額Mを超えないと言うかたちで式をたてます.

50(5xA1 + 4xA2 + 5xA3 + 7xA4 + 3xA5 + 5xA6 + 4xA7 + · · ·+ 7xA69 + 3xA70)

+ 80(5xB1 + 4xB2 + 5xB3 + 7xB4 + 3xB5 + 5xB6 + 4xB7 + · · ·+ 7xB69 + 3xB70)

· · ·− 50(5xX1 + 4xX2 + 5xX3 + 7xX4 + 3xX5 + 5xX6 + 4xX7 + · · ·+ 7xX69 + 3xX70) ≤ M

(4.21)

以上の制約式をすべてまとめると,

変数の数=70 ∗ 24 = 1680

制約式の本数=24 ∗ (2 + 68 + 67) + 2 ∗ 70 + 70 + 1 = 3499

となりました.いままでのところ,制約式のみを論じて,目的関数については触れていません.その理由は,現

実のスケジューリング問題では条件が厳しすぎて,すべての制約を完全に満たせないことがしばしば生じるからです.そのような場合,目的関数値の大小より,制約を調整して実行可能な解を見つけ出すことの方が大事なのです.制約の調整方法についても,いろいろな方法が提案されていますが,ここでは割愛します.

Page 22: | 0 T 1 Tksuzuki/teaching/ch4.pdf · 2009-06-29 · t $ 0 lp p 0 ¯` b ( :

126 第 4章 整数計画法

演習問題 4.5

2週間の割り当てにおいて,1週目と 2週目のそれぞれの勤務時間の合計に差がないことが望ましい.週ごとの勤務時間の差が 15時間を越えないようにするためにはどのような制約式をつくるべきか,A さんの場合について式をつくれ.

演習問題 4.6

Aさんは,原則として連続 12時間働いてもよいが,夜勤の後に早朝勤を行うのは避けたいと思っている.夜勤がなければ,早朝勤を行うことは構わない.この条件を式で表すにはどうすればよいか.