Slide 1

Slide 1 text

© Hajime Mizuyama Production & Operations Management #2 @AGU Lec.3: Single Machine Scheduling #2 • Minimizing total weighted tardiness (revisited) • Dynamic programming (DP) • Forward and backward DPs

Slide 2

Slide 2 text

© Hajime Mizuyama Course Schedule #1 Date Contents Single machine scheduling (1): Branch and bound (BAB) Single machine scheduling (2): Dynamic programming (DP) Flow shop scheduling: Unlimited, limited, and no buffer capacity cases, and branch and bound (BAB) Metaheuristics: Local search, simulated annealing, tabu search, genetic algorithm, etc. Job shop scheduling (1): Disjunctive graph representation, and 0-1 mixed-integer linear programming (0-1 MILP) formulation Job shop scheduling (2): How to enumerate active schedules, and branch and bound (BAB) Mid-term examination

Slide 3

Slide 3 text

© Hajime Mizuyama There are only one machine and several jobs. The sequence of the jobs 𝜋 should be properly determined to minimize total weighted tardiness. • Set of jobs: 𝐽 = {1, 2, … , |𝐽|} • Processing time of job 𝑗 ∈ 𝐽: 𝑝! • Weight of job 𝑗 ∈ 𝐽: 𝑤! • Due date of job 𝑗 ∈ 𝐽: 𝑑! • Set of permutations of jobs in 𝐽: Π" ∋ 𝜋 = 𝜋# , 𝜋$ , … , 𝜋 " • Starting time of job 𝑗 ∈ 𝐽: 𝑆! • Completion time of job 𝑗 ∈ 𝐽: 𝐶! • Objective function: 𝑓 𝜋 = ∑!∈" 𝑤! 𝑇! = ∑!∈" 𝑤! max(0, 𝐶! − 𝑑! ) Sigle-Machine Scheduling Problem to Minimize Total Weighted Tardiness

Slide 4

Slide 4 text

© Hajime Mizuyama • Dynamic programming (DP) is an algorithm class, which derives an optimal solution of the original problem by utilizing the solutions of its subproblems. • It first divide the original problem into subproblems recursively, until the solutions of the divided subproblems are trivial. • Then, the next smallest unsolved subproblems are solved using the solutions of the subproblems already solved. • This is repeated bottom-up until the original problem is reached. • The algorithm is characterized by initial condition, recursive relation, and optimal value function. • WW (Wagner-Whitin) algorithm for dynamic lot sizing is an example. Dynamic Programming (DP)

Slide 5

Slide 5 text

© Hajime Mizuyama Objective function 𝑓 𝜋 = ∑!∈" 𝑤! 𝑇! = ∑!∈" 𝑤! max(0, 𝐶! − 𝑑! ) Optimal value function 𝑉 𝐽 = min &∈'! 𝑓(𝜋) Initial condition 𝑉(∅) = 0 Recursive relation 𝑉(𝑁) = min !∈( 𝑉(𝑁 ∖ {𝑗}) + 𝑤! max(0, ∑)∈( 𝑝) − 𝑑! 𝑁 ∈ 𝒫(𝐽) ∖ ∅ Forward DP for Minimizing Total Weighted Tardiness

Slide 6

Slide 6 text

© Hajime Mizuyama 𝑉(∅) ← 0; 𝑠(∅) ← ∅; 𝑠𝑖𝑧𝑒 ← 1 while 𝑠𝑖𝑧𝑒 ≤ |𝐽| do for 𝑁 ∈ 𝑁 ⊆ 𝐽 𝑁 = 𝑠𝑖𝑧𝑒} do 𝑉(𝑁) ← min !∈( 𝑉(𝑁 ∖ {𝑗}) + 𝑤! max(0, ∑)∈( 𝑝) − 𝑑! 𝑗∗ ← argmin !∈( 𝑉(𝑁 ∖ {𝑗}) + 𝑤! max(0, ∑)∈( 𝑝) − 𝑑! 𝑠 𝑁 ← 𝑠 𝑁 ∖ 𝑗∗ ^ (𝑗∗) od 𝑠𝑖𝑧𝑒 ← 𝑠𝑖𝑧𝑒 + 1 od 𝜋 = 𝑠(𝐽) Algorithm of Forward DP

Slide 7

Slide 7 text

© Hajime Mizuyama Illustrative Example: Forward DP #1 𝑗 1 2 3 4 𝑝! 40 80 50 110 𝑤! 5 4 2 10 𝑑! 50 220 150 160 Example jobs When 𝑠𝑖𝑧𝑒 = 1, 𝑁 ∈ { 1 , 2 , 3 , {4}} are handled as follows: 𝑉 1 = 𝑉 ∅ + 𝑤# max(0, 𝑝# − 𝑑# ) = 0, 𝑠 1 = (1) 𝑉 2 = 𝑉 ∅ + 𝑤$ max(0, 𝑝$ − 𝑑$ ) = 0, 𝑠 2 = (2) 𝑉 3 = 𝑉 ∅ + 𝑤+ max(0, 𝑝+ − 𝑑+ ) = 0, 𝑠 3 = (3) 𝑉 4 = 𝑉 ∅ + 𝑤, max(0, 𝑝, − 𝑑, ) = 0, 𝑠 4 = (4) 𝑁 = ∅: 𝑉 = 0, 𝑠 = ∅

Slide 8

Slide 8 text

© Hajime Mizuyama Illustrative Example: Forward DP #2 𝑗 1 2 3 4 𝑝! 40 80 50 110 𝑤! 5 4 2 10 𝑑! 50 220 150 160 Example jobs When 𝑠𝑖𝑧𝑒 = 2, 𝑁 ∈ { 1, 2 , 1, 3 , … , {3, 4}} are handled as follows: 𝑉 1, 2 = min 𝑉( 1 ) + 𝑤$ max 0, 𝑝# + 𝑝$ − 𝑑$ , 𝑉( 2 ) + 𝑤# max 0, 𝑝# + 𝑝$ − 𝑑# = min 0, 350 = 0, 𝑠 1, 2 = (1, 2) 𝑉 1, 3 = 0, 𝑠 1, 3 = 1, 3 , 𝑉 1, 4 = 0, 𝑠 1, 4 = 1, 4 𝑉 2, 3 = 0, 𝑠 2, 3 = 2, 3 𝑜𝑟 (3, 2), 𝑉 2, 4 = 0, 𝑠 2, 4 = 4, 2 , 𝑉 3, 4 = 0, 𝑠 3, 4 = 3, 4 𝑁 = {1}: 𝑉 = 0, 𝑠 = (1) 𝑁 = {2}: 𝑉 = 0, 𝑠 = (2) 𝑁 = {3}: 𝑉 = 0, 𝑠 = (3) 𝑁 = {4}: 𝑉 = 0, 𝑠 = (4)

Slide 9

Slide 9 text

© Hajime Mizuyama Illustrative Example: Forward DP #3 𝑗 1 2 3 4 𝑝! 40 80 50 110 𝑤! 5 4 2 10 𝑑! 50 220 150 160 Example jobs When 𝑠𝑖𝑧𝑒 = 3, 𝑁 ∈ { 1, 2, 3 , … , {2, 3, 4}} are handled as follows: 𝑉 1, 2, 3 = min 𝑉( 1, 2 ) + 𝑤+ max 0, 𝑝# + 𝑝$ + 𝑝+ − 𝑑+ , 𝑉( 1, 3 ) + 𝑤$ max 0, 𝑝# + 𝑝$ + 𝑝+ − 𝑑$ , 𝑉( 2, 3 ) + 𝑤# max 0, 𝑝# + 𝑝$ + 𝑝+ − 𝑑# 𝑉 1, 2 = min 40, 0, 600 = 0, 𝑠 1, 2, 3 = (1, 3, 2) 𝑉 1, 2, 4 = 40, 𝑠 1, 2, 4 = 1, 4, 2 , 𝑉 1, 3, 4 = 100, 𝑠 1, 3, 4 = 1, 4, 3 , 𝑉 2, 3, 4 = 80, 𝑠 2, 3, 4 = 3, 4, 2 𝑁 ∈ 𝑁 ⊆ 𝐽 𝑁 = 2}: 𝑉 = 0 𝑠 1, 2 = 1, 2 , 𝑠 1, 3 = 1, 3 , 𝑠 1, 4 = 1, 4 , 𝑠 2, 3 = 2, 3 𝑜𝑟 (3, 2), 𝑠 2, 4 = 4, 2 , 𝑠 3, 4 = 3, 4

Slide 10

Slide 10 text

© Hajime Mizuyama Illustrative Example: Forward DP #4 𝑗 1 2 3 4 𝑝! 40 80 50 110 𝑤! 5 4 2 10 𝑑! 50 220 150 160 Example jobs When 𝑠𝑖𝑧𝑒 = 4, 𝑁 = 1, 2, 3, 4 = 𝐽 is handled as follows: 𝑉 𝐽 = min 𝑉( 1, 2, 3 ) + w, max 0, 280 − 𝑑, , 𝑉( 1, 2, 4 ) + w+ max 0, 280 − 𝑑+ , 𝑉( 1, 3, 4 ) + w$ max 0, 280 − 𝑑$ , 𝑉( 2, 3, 4 ) + w# max 0, 280 − 𝑑# 𝑉 1, 2 = min 1200, 300, 340, 1230 = 300 𝑠 𝐽 = (1, 4, 2, 3) 𝑁 = {1, 2, 3}: 𝑉 = 0, 𝑠 = (1, 3, 2) 𝑁 = {1, 2, 4}: 𝑉 = 40, 𝑠 = (1, 4, 2) 𝑁 = {1, 3, 4}: 𝑉 = 100, 𝑠 = (1, 4, 3) 𝑁 = {2, 3, 4}: 𝑉 = 80, 𝑠 = (3, 4, 2)

Slide 11

Slide 11 text

© Hajime Mizuyama Objective function 𝑓 𝜋 = ∑!∈" 𝑤! 𝑇! = ∑!∈" 𝑤! max(0, 𝐶! − 𝑑! ) Optimal value function 𝑉 𝐽 = min &∈'! 𝑓(𝜋) Initial condition 𝑉(∅) = 0 Recursive relation 𝑉 𝑁 = min !∈( 𝑉 𝑁 ∖ 𝑗 + 𝑤! max(0, ∑)∈("∖()∪ ! 𝑝) − 𝑑! ) 𝑁 ∈ 𝒫(𝐽) ∖ ∅ Backward DP for Minimizing Total Weighted Tardiness

Slide 12

Slide 12 text

© Hajime Mizuyama 𝑉(∅) ← 0; 𝑠(∅) ← ∅; 𝑠𝑖𝑧𝑒 ← 1 while 𝑠𝑖𝑧𝑒 ≤ |𝐽| do for 𝑁 ∈ 𝑁 ⊆ 𝐽 𝑁 = 𝑠𝑖𝑧𝑒} do 𝑉(𝑁) ← min !∈( 𝑉(𝑁 ∖ {𝑗}) + 𝑤! max(0, ∑)∈("∖()∪ ! 𝑝) − 𝑑! ) 𝑗∗ ← argmin !∈( 𝑉(𝑁 ∖ {𝑗}) + 𝑤! max(0, ∑)∈("∖()∪ ! 𝑝) − 𝑑! ) 𝑠 𝑁 ← 𝑗∗ ^ 𝑠 𝑁 ∖ 𝑗∗ od 𝑠𝑖𝑧𝑒 ← 𝑠𝑖𝑧𝑒 + 1 od 𝜋 = 𝑠(𝐽) Algorithm of Backward DP

Slide 13

Slide 13 text

© Hajime Mizuyama Illustrative Example: Backward DP #1 𝑗 1 2 3 4 𝑝! 40 80 50 110 𝑤! 5 4 2 10 𝑑! 50 220 150 160 Example jobs When 𝑠𝑖𝑧𝑒 = 1, 𝑁 ∈ { 1 , 2 , 3 , {4}} are handled as follows: 𝑉 1 = 𝑉 ∅ + 𝑤# max(0, 280 − 𝑑# ) = 1150, 𝑠 1 = (1) 𝑉 2 = 𝑉 ∅ + 𝑤$ max(0, 280 − 𝑑$ ) = 240, 𝑠 2 = (2) 𝑉 3 = 𝑉 ∅ + 𝑤+ max(0, 280 − 𝑑+ ) = 260, 𝑠 3 = (3) 𝑉 4 = 𝑉 ∅ + 𝑤, max(0, 280 − 4) = 1200, 𝑠 4 = (4) 𝑁 = ∅: 𝑉 = 0, 𝑠 = ∅

Slide 14

Slide 14 text

© Hajime Mizuyama Illustrative Example: Backward DP #2 𝑗 1 2 3 4 𝑝! 40 80 50 110 𝑤! 5 4 2 10 𝑑! 50 220 150 160 Example jobs When 𝑠𝑖𝑧𝑒 = 2, 𝑁 ∈ { 1, 2 , 1, 3 , … , {3, 4}} are handled as follows: 𝑉 1, 2 = min 𝑉( 1 ) + 𝑤$ max 0, 𝑝$ + 𝑝+ + 𝑝, − 𝑑$ , 𝑉( 2 ) + 𝑤# max 0, 𝑝# + 𝑝+ + 𝑝, − 𝑑# 𝑉 1, 2 = min(1150 + 80, 240 + 750) = 990, 𝑠 1, 2 = (1, 2) 𝑉 1, 3 = 1160, 𝑠 1, 3 = 1, 3 , 𝑉 1, 4 = 1800, 𝑠 1, 4 = 1, 4 𝑉 2, 3 = 300, 𝑠 2, 3 = 2, 3 , 𝑉 2, 4 = 640, 𝑠 2, 4 = 4, 2 , 𝑉 3, 4 = 960, 𝑠 3, 4 = 4, 3 𝑁 = {1}: 𝑉 = 1150, 𝑠 = (1) 𝑁 = {2}: 𝑉 = 240, 𝑠 = (2) 𝑁 = {3}: 𝑉 = 260, 𝑠 = (3) 𝑁 = {4}: 𝑉 = 1200, 𝑠 = (4)

Slide 15

Slide 15 text

© Hajime Mizuyama Illustrative Example: Backward DP #3 𝑗 1 2 3 4 𝑝! 40 80 50 110 𝑤! 5 4 2 10 𝑑! 50 220 150 160 Example jobs When 𝑠𝑖𝑧𝑒 = 3, 𝑁 ∈ { 1, 2, 3 , … , {2, 3, 4}} are handled as follows: 𝑉 1, 2, 3 = min 𝑉( 1, 2 ) + 𝑤+ max 0, 𝑝+ + 𝑝, − 𝑑+ , 𝑉( 1, 3 ) + 𝑤$ max 0, 𝑝$ + 𝑝, − 𝑑$ , 𝑉( 2, 3 ) + 𝑤# max 0, 𝑝# + 𝑝, − 𝑑# 𝑉 1, 2 = min 1010, 1160, 800 = 800, 𝑠 1, 2, 3 = (3, 1, 2) 𝑉 1, 2, 4 = 840, 𝑠 1, 2, 4 = 1, 4, 2 , 𝑉 1, 3, 4 = 1310, 𝑠 1, 3, 4 = 1, 4, 3 , 𝑉 2, 3, 4 = 300, 𝑠 2, 3, 4 = 4, 2, 3 𝑁 = {1, 2}: 𝑉 = 990, 𝑠 = (1, 2) 𝑁 = {1, 3}: 𝑉 = 1160, 𝑠 = (1, 3) 𝑁 = {1, 4}: 𝑉 = 1800, 𝑠 = (1, 4) 𝑁 = {2, 3}: 𝑉 = 300, 𝑠 = 2, 3 𝑁 = {2, 4}: 𝑉 = 640, 𝑠 = (4, 2) 𝑁 = {3, 4}: 𝑉 = 960, 𝑠 = (4, 3)

Slide 16

Slide 16 text

© Hajime Mizuyama Illustrative Example: Backward DP #4 𝑗 1 2 3 4 𝑝! 40 80 50 110 𝑤! 5 4 2 10 𝑑! 50 220 150 160 Example jobs When 𝑠𝑖𝑧𝑒 = 4, 𝑁 = 1, 2, 3, 4 = 𝐽 is handled as follows: 𝑉 𝐽 = min 𝑉( 1, 2, 3 ) + w, max 0, 𝑝, − 𝑑, , 𝑉( 1, 2, 4 ) + w+ max 0, 𝑝+ − 𝑑+ , 𝑉( 1, 3, 4 ) + w$ max 0, 𝑝$ − 𝑑$ , 𝑉( 2, 3, 4 ) + w# max 0, 𝑝# − 𝑑# 𝑉 1, 2 = min 800, 840, 1310, 300 = 300 𝑠 𝐽 = (1, 4, 2, 3) 𝑁 = {1, 2, 3}: 𝑉 = 800, 𝑠 = (3, 1, 2) 𝑁 = {1, 2, 4}: 𝑉 = 840, 𝑠 = (1, 4, 2) 𝑁 = {1, 3, 4}: 𝑉 = 1310, 𝑠 = (1, 4, 3) 𝑁 = {2, 3, 4}: 𝑉 = 300, 𝑠 = (4, 2, 3)

Slide 17

Slide 17 text

© Hajime Mizuyama Illustrative Example: Optimal Schedule ∑!∈" 𝑤! 𝑇! = 300 𝑗 1 2 3 4 𝑝! 40 80 50 110 𝑤! 5 4 2 10 𝑑! 50 220 150 160 𝐶! 40 230 280 150 𝑇! 0 10 130 0 𝑑" 𝑑# 𝑑$ 𝑑% Example jobs Chosen sequence: 𝜋 = (1, 4, 2, 3)