Slide 1

Slide 1 text

© Hajime Mizuyama Production & Operations Management #2 @AGU Lec.2: Single Machine Scheduling #1 • Some easily solvable problems (revisited) • Enumerating all permutations of jobs • Branch and bound (BAB)

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 attain a specified objective. • 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 𝑗 ∈ 𝐽: 𝐶! Sigle-Machine Scheduling Problem

Slide 4

Slide 4 text

© Hajime Mizuyama • Makespan: 𝐶%&' = max !∈" 𝐶! – This does not depend on the job sequence 𝜋 in the standard setting considered here. • Total weighted (or unweighted) completion times: ∑!∈" 𝑤! 𝐶! • Maximum weighted (or unweighted) tardiness: max !∈" 𝑤! 𝑇! • Total weighted (or unweighted) tardiness: ∑!∈" 𝑤! 𝑇! – Lateness of job 𝑗 ∈ 𝐽: 𝐿! = 𝐶! − 𝑑! – Tardiness of job 𝑗 ∈ 𝐽: 𝑇! = max(0, 𝐿! ) Typical Objectives

Slide 5

Slide 5 text

© Hajime Mizuyama Illustrative Example Total completion times ∑!∈" 𝐶! = 610 (unweighted) ∑!∈" 𝑤! 𝐶! = 3820 (weighted) Maximum Tardiness max !∈" 𝑇! = 120 (unweighted) max !∈" 𝑤! 𝑇! = 1200 (weighted) Total tardiness ∑!∈" 𝑇! = 140 (unweighted) ∑!∈" 𝑤! 𝑇! = 1240 (weighted) 𝑗 1 2 3 4 𝑝! 40 80 50 110 𝑤! 5 4 2 10 𝑑! 50 220 150 160 𝐶! 40 120 170 280 𝑇! 0 0 20 120 𝑑" 𝑑# 𝑑$ 𝑑% If 𝜋 = (1, 2, 3, 4) is used, Example jobs

Slide 6

Slide 6 text

© Hajime Mizuyama Some Easily Solvable Problems • Total completion times – SPT rule • Total weighted completion times – WSPT rule • Maximum tardiness – EDD rule • Maximum weighted tardiness – Simple backward algorithm shown on the right 𝑁 ← 𝐽; 𝑖 ← |𝐽|; F 𝐶 ← ∑!∈" 𝑝! while 𝑁 ≠ 𝜙 do Choose a job ̃ 𝚥 which satisfies: ̃ 𝚥 ∈ argmin !∈) 𝑤! O max(0, F 𝐶 − 𝑑! ) 𝜋* ← ̃ 𝚥; 𝑁 ← 𝑁 ∖ { ̃ 𝚥} F 𝐶 ← F 𝐶 − 𝑝 ̃ ,; 𝑖 ← 𝑖 − 1 od

Slide 7

Slide 7 text

© Hajime Mizuyama 𝑑" 𝑑# 𝑑$ 𝑑% Minimizing Maximum Weighted Tardiness The algorithm results in 𝜋 = (1, 4, 3, 2), and max !∈" 𝑤! 𝑇! = 240. Unfortunately, the sequence that minimizes the maximum weighted tardiness does not always minimize the total weighted tardiness, which is 𝜋 = (1, 4, 2, 3) in this case. 𝑗 1 2 3 4 𝑝! 40 80 50 110 𝑤! 5 4 2 10 𝑑! 50 220 150 160 𝐶! 𝑤" 𝑇" 𝑤# 𝑇# 𝑤" 𝑇$ 𝑤% 𝑇% 280 1150 240 260 1200 200 750 100 400 150 500 0 40 0 Example jobs

Slide 8

Slide 8 text

© Hajime Mizuyama Set of permutations of jobs Set of permutations of jobs (*, *, *, 1) (*, *, *, 2) 3! (*, *, *, 4) (*, *, *, 3) (*, *, *, 2) (*, *, *, 1) (*, *, 4, 1) (*, *, 3, 1) (*, *, 2, 1) (*, *, 4, 1) Branching and Search Tree (|J|=4) 4! 2! (*, *, 4, 2) (*, *, 3, 2) (*, *, 1, 2) 1! (3, 2, 4, 1) (2, 3, 4, 1)

Slide 9

Slide 9 text

© Hajime Mizuyama • Each intermediate node of the search tree corresponds to a subset of possible permutations of jobs (or proper job sequences). • If a lower bound (LB) can be specified to an intermediate node, we can tell that the node does not contain any job sequence whose objective function value is smaller than the LB. • This means that, if we have already found a temporary solution whose objective function value is smaller than the LB, we do not need to evaluate the job sequences in the node. • It is called bounding operation to remove the unsplit nodes having a LB inferior to the temporary solution’s objective function value (UB). • The LB values can also be used to determine which node to branch next (e.g., choosing the one with the smallest LB). Lower Bound (LB) and Bounding

Slide 10

Slide 10 text

© Hajime Mizuyama BAB Algorithm for Minimizing Total Weighted Tardiness 𝑁 ← {∅}; 𝑈𝐵 ← ∞; 𝜋 ← ∅ while 𝑁 ≠ ∅ do Choose 𝑠 = (𝑠# , 𝑠$ , … ) ∈ 𝑁 𝑁 ← 𝑁 ∖ {𝑠} for 𝑗 ∈ 𝐽 ∖ 𝑠 do ̃ 𝑠 ← 𝑗 ^ 𝑠 Calculate 𝐿𝐵( ̃ 𝑠) if 𝐿𝐵 ̃ 𝑠 < 𝑈𝐵 then if 𝐽 ∖ ̃ 𝑠 = ∅ then 𝑈𝐵 ← 𝐿𝐵( ̃ 𝑠) 𝜋 ← ̃ 𝑠 𝑁 ← 𝜎 ∈ 𝑁 𝐿𝐵(𝜎) < 𝑈𝐵} else 𝑁 ← 𝑁 ∪ { ̃ 𝑠} fi fi od od

Slide 11

Slide 11 text

© Hajime Mizuyama For each (partial) sequence 𝑠 (specified from the tail), we can assign the set of full sequences which accords with the given 𝑠 as: Z Π" (𝑠) = 𝜋 ∈ Π" (𝜋 " - . /# , … , 𝜋 " ) = 𝑠} Any lower bound 𝐿𝐵(𝑠) corresponding to the sequence should satisfy: 𝐿𝐵 𝑠 ≤ min 0∈1 2(.) 𝑓 𝜋 = min 0∈1 2(.) ∑!∈" 𝑤! 𝑇! 𝑇! for each 𝑗 ∈ 𝑠 and min 0∈1 2!(.) max !∈"∖. 𝑤! 𝑇! for the set of unassigned jobs can be evaluated without specifying the rest of the sequence. Hence, 𝐿𝐵 𝑠 = ∑!∈. 𝑤! 𝑇! + min 0∈1 2!(.) max !∈"∖. 𝑤! 𝑇! can be used as the lower bound. Lower Bound (LB) for Total Weighted Tardiness

Slide 12

Slide 12 text

© Hajime Mizuyama 𝑑" 𝑑# 𝑑$ 𝑑% Illustrative Example: LB Calculation #1 (Partial) sequence 𝑠 = (1) Lower bound 𝐿𝐵 (1) = 1150 + max 80, 0, 0 = 1230 𝑗 1 2 3 4 𝑝! 40 80 50 110 𝑤! 5 4 2 10 𝑑! 50 220 150 160 𝐶! 𝑤" 𝑇" 𝑤# 𝑇# 𝑤" 𝑇$ 𝑤% 𝑇% 280 1150 240 80 180 800 160 0 0 110 0 Example jobs

Slide 13

Slide 13 text

© Hajime Mizuyama 𝑑" 𝑑# 𝑑$ 𝑑% Illustrative Example: LB Calculation #2 (Partial) sequence 𝑠 = (2) Lower bound 𝐿𝐵 (2) = 240 + max 100, 0, 0 = 340 𝑗 1 2 3 4 𝑝! 40 80 50 110 𝑤! 5 4 2 10 𝑑! 50 220 150 160 𝐶! 𝑤" 𝑇" 𝑤# 𝑇# 𝑤" 𝑇$ 𝑤% 𝑇% 280 240 200 750 100 400 150 500 0 40 0 Example jobs

Slide 14

Slide 14 text

© Hajime Mizuyama 𝑑" 𝑑# 𝑑$ 𝑑% Illustrative Example: LB Calculation #3 (Partial) sequence 𝑠 = (3) Lower bound 𝐿𝐵 (3) = 260 + max 40, 0, 0 = 300 𝑗 1 2 3 4 𝑝! 40 80 50 110 𝑤! 5 4 2 10 𝑑! 50 220 150 160 𝐶! 𝑤" 𝑇" 𝑤# 𝑇# 𝑤" 𝑇$ 𝑤% 𝑇% 280 260 230 900 40 700 150 500 0 40 0 Example jobs

Slide 15

Slide 15 text

© Hajime Mizuyama 𝑑" 𝑑# 𝑑$ 𝑑% Illustrative Example: LB Calculation #4 (Partial) sequence 𝑠 = (4) Lower bound 𝐿𝐵 (4) = 1200 + max 0, 0, 0 = 1200 𝑗 1 2 3 4 𝑝! 40 80 50 110 𝑤! 5 4 2 10 𝑑! 50 220 150 160 𝐶! 𝑤" 𝑇" 𝑤# 𝑇# 𝑤" 𝑇$ 𝑤% 𝑇% 280 1200 170 600 0 40 90 200 0 40 0 Example jobs

Slide 16

Slide 16 text

© Hajime Mizuyama Set of permutations of jobs Illustrative Example: Branching Operation and LBs #1 (*, *, *, 1) (*, *, *, 2) (*, *, *, 4) (*, *, *, 3) 1200 300 340 1230

Slide 17

Slide 17 text

© Hajime Mizuyama 𝑑" 𝑑# 𝑑$ 𝑑% Illustrative Example: LB Calculation #5 (Partial) sequence 𝑠 = (1, 3) Lower bound 𝐿𝐵 (1, 3) = 260 + 900 + max 0, 0 = 1160 𝑗 1 2 3 4 𝑝! 40 80 50 110 𝑤! 5 4 2 10 𝑑! 50 220 150 160 𝐶! 𝑤" 𝑇" 𝑤# 𝑇# 𝑤" 𝑇$ 𝑤% 𝑇% 280 260 230 900 190 0 300 110 0 Example jobs

Slide 18

Slide 18 text

© Hajime Mizuyama 𝑑" 𝑑# 𝑑$ 𝑑% Illustrative Example: LB Calculation #6 (Partial) sequence 𝑠 = (2, 3) Lower bound 𝐿𝐵((2, 3)) = 260 + 40 + max 0, 0 = 300 𝑗 1 2 3 4 𝑝! 40 80 50 110 𝑤! 5 4 2 10 𝑑! 50 220 150 160 𝐶! 𝑤" 𝑇" 𝑤# 𝑇# 𝑤" 𝑇$ 𝑤% 𝑇% 280 260 230 40 150 500 0 40 0 Example jobs

Slide 19

Slide 19 text

© Hajime Mizuyama 𝑑" 𝑑# 𝑑$ 𝑑% Illustrative Example: LB Calculation #7 (Partial) sequence 𝑠 = (4, 3) Lower bound 𝐿𝐵((4, 3)) = 260 + 700 + max 0, 0 = 960 𝑗 1 2 3 4 𝑝! 40 80 50 110 𝑤! 5 4 2 10 𝑑! 50 220 150 160 𝐶! 𝑤" 𝑇" 𝑤# 𝑇# 𝑤" 𝑇$ 𝑤% 𝑇% 280 260 230 700 120 350 0 40 0 Example jobs

Slide 20

Slide 20 text

© Hajime Mizuyama Set of permutations of jobs Illustrative Example: Branching Operation and LBs #2 (*, *, *, 1) (*, *, *, 2) (*, *, *, 4) (*, *, *, 3) 1200 300 340 1230 (*, *, 4, 3) (*, *, 2, 3) (*, *, 1, 3) 1160 300 960

Slide 21

Slide 21 text

© Hajime Mizuyama 𝑑" 𝑑# 𝑑$ 𝑑% Illustrative Example: LB Calculation #8 (Partial) sequence 𝑠 = (1, 2, 3) Lower bound 𝐿𝐵 (1, 2, 3) = 260 + 40 + 500 + max 0 = 800 = 𝑓((4, 1, 2, 3)) 𝑗 1 2 3 4 𝑝! 40 80 50 110 𝑤! 5 4 2 10 𝑑! 50 220 150 160 𝐶! 𝑤" 𝑇" 𝑤# 𝑇# 𝑤" 𝑇$ 𝑤% 𝑇% 280 260 230 40 150 500 40 0 Example jobs

Slide 22

Slide 22 text

© Hajime Mizuyama 𝑑" 𝑑# 𝑑$ 𝑑% Illustrative Example: LB Calculation #9 (Partial) sequence 𝑠 = (4, 2, 3) Lower bound 𝐿𝐵 (4, 2, 3) = 260 + 40 + 0 + max 0 = 300 = 𝑓((1, 4, 2, 3)) 𝑗 1 2 3 4 𝑝! 40 80 50 110 𝑤! 5 4 2 10 𝑑! 50 220 150 160 𝐶! 𝑤" 𝑇" 𝑤# 𝑇# 𝑤" 𝑇$ 𝑤% 𝑇% 280 260 230 40 150 0 40 0 Example jobs

Slide 23

Slide 23 text

© Hajime Mizuyama Set of permutations of jobs Illustrative Example: Bounding Operation #1 (*, *, *, 1) (*, *, *, 2) (*, *, *, 4) (*, *, *, 3) 1200 300 340 1230 (*, *, 4, 3) (*, *, 2, 3) (*, *, 1, 3) 1160 300 960 (1, 4, 2, 3) (4, 1, 2, 3) 800 300

Slide 24

Slide 24 text

© Hajime Mizuyama Set of permutations of jobs Illustrative Example: Bounding Operation #2 (*, *, *, 1) (*, *, *, 2) (*, *, *, 4) (*, *, *, 3) 1200 300 340 1230 (*, *, 4, 3) (*, *, 2, 3) (*, *, 1, 3) 1160 300 960 (1, 4, 2, 3) (4, 1, 2, 3) 800 300