Slide 1

Slide 1 text

© Hajime Mizuyama Production & Operations Management #2 @AGU Lec.6: Job Shop Scheduling #1 • Disjunctive graph representation • 0-1 mixed-integer linear programming (0-1 MILP) • 0-1 MILP formulation of job shop scheduling problem

Slide 2

Slide 2 text

© Hajime Mizuyama Course Schedule #1 Date Contents Single machine scheduling (1): Dynamic programming (DP) Single machine scheduling (2): Branch and bound (BAB) 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 multiple machines and jobs with different processing routes. The jobs on each machine should be ordered to minimize the makespan. • Job set and machine set: 𝐽 = {1, 2, … , |𝐽|} and 𝑀 = {1, 2, … , |𝑀|} • Set of operations of job 𝑗 ∈ 𝐽: 𝐾! " = { 𝑗, 1 , 𝑗, 2 , … , (𝑗, |𝐾! "|)} • Processing time of operation (𝑗, 𝑘) ∈ 𝐾! ": 𝑝!# • Machine carrying out operation (𝑗, 𝑘) ∈ 𝐾! " : 𝜇!# ∈ 𝑀 • Set of operations on machine 𝑚 ∈ 𝑀: (𝑗, 𝑘) 𝜇!# = 𝑚} ≡ 𝐾$ % • Operation sequence on machine 𝑚 ∈ 𝑀: 𝜋$ = (𝜋$& , 𝜋$' , … , 𝜋$ (! " ) • Starting and completion times of operation (𝑗, 𝑘) ∈ 𝐾! ": 𝑆!# and 𝐶!# • Makespan: 𝐶)*+ = max (!,#)∈(# $ 𝐶!# Job Shop Scheduling Problem

Slide 4

Slide 4 text

© Hajime Mizuyama J1 J2 J3 𝜇&# 𝑝&# 𝜇'# 𝑝'# 𝜇0# 𝑝0# 𝑘 = 1 M3 30 M1 40 M2 20 𝑘 = 2 M1 70 M3 40 M3 50 𝑘 = 3 M2 20 M2 60 M1 80 Illustrative Example Processing routes and processing times (min.) The operations of each job should be carried out in the specified order (i.e., processing route). Further, each machine can perform only one operation at a time, and hence the operations on the machine should be carried out one by one. How should we sequence the operations on each machine?

Slide 5

Slide 5 text

© Hajime Mizuyama Precedence Diagram Start (1, 1) (2, 1) (3, 1) (1, 2) (2, 2) (3, 2) (1, 3) (2, 3) (3, 3) 0 0 0 30 40 20 70 40 50 0 40 180 0 0 80 120 0 30 110 End 200 20 60 80 • Operations on a same machine should be ordered (by adding arcs). • This must be done with keeping the graph acyclic.

Slide 6

Slide 6 text

© Hajime Mizuyama J2 J1 J3 Corresponding Schedule M1 M2 M3 J1 J1 J2 J2 J3 J3

Slide 7

Slide 7 text

© Hajime Mizuyama Disjunctive Graph Start (1, 1) (2, 1) (3, 1) (1, 2) (2, 2) (3, 2) (1, 3) (2, 3) (3, 3) 0 0 0 30 40 20 70 40 50 End 20 60 80 Construct an acyclic graph by choosing one from each pair of disjunctive arcs so that the critical path from start to end becomes the shortest. Conjunctive arcs Disjunctive arcs

Slide 8

Slide 8 text

© Hajime Mizuyama Minimize Decision variables 𝐶)*+ 𝐶)*+ ∈ ℝ , 𝑆!# ∈ ℝ ∀ 𝑗, 𝑘 ∈ 𝐾! " ∀𝑗 ∈ 𝐽 Subject to 𝑆!#1& − 𝑆!# ≥ 𝑝!# ∀ 𝑗, 𝑘 ∈ 𝐾! " ∖ {(𝑗, |𝐾! "|)} ∀𝑗 ∈ 𝐽 𝐶)*+ − 𝑆 !|(# $| ≥ 𝑝 !|(# $| ∀𝑗 ∈ 𝐽 𝑆!# ≥ 0 ∀ 𝑗, 𝑘 ∈ 𝐾! " ∀𝑗 ∈ 𝐽 𝑆3# − 𝑆!4 ≥ 𝑝!4 ∨ 𝑆!4 − 𝑆3# ≥ 𝑝3# ∀ 𝑖, 𝑘, 𝑗, 𝑙 ∈ 𝑖, 𝑘, 𝑗, 𝑙 𝑖, 𝑘 , 𝑗, 𝑙 ∈ 𝐾$ % ∧ 𝑖 < 𝑗} ∀𝑚 ∈ 𝑀 Disjunctive Programming Formulation

Slide 9

Slide 9 text

© Hajime Mizuyama 0-1 Mixed-integer linear programming (0-1 MILP) • When the objective function and all the constraints of an optimization problem are linear functions of the decision variables, it is a linear programming (LP). • If some (not all) of the decision variables are integers, the problem is called a mixed-integer liner programming (MILP). • Further, if the integer decision variables are binary, that is, their values are constrained in {0, 1}, it is called a 0-1 mixed-integer liner programming (0-1 MILP). • Let’s turn the disjunctive programming formulation into a 0-1 MILP. 0-1 MILP

Slide 10

Slide 10 text

© Hajime Mizuyama Original constraints using a logical operator 𝑆3# − 𝑆!4 ≥ 𝑝!4 ∨ 𝑆!4 − 𝑆3# ≥ 𝑝3# Identical but linearized constraints 𝑆3# − 𝑆!4 ≥ 𝑝!4 − 𝑥3#!4 H 𝑀 𝑆!4 − 𝑆3# ≥ 𝑝3# − 1 − 𝑥3#!4 H 𝑀 where 𝑥3#!4 ∈ {0, 1} Additional binary decision variables 𝑀 (> ∑$∈% ∑ (!,#)∈(! " 𝑝!# ) Big-M: A constant of a sufficiently large value (The square around M is only for distinguishing it from the set of machines) Linearize Constraints Using Big-M

Slide 11

Slide 11 text

© Hajime Mizuyama Minimize Decision variables 𝐶)*+ 𝐶)*+ ∈ ℝ , 𝑆!# ∈ ℝ , 𝑥3#!4 ∈ {0, 1} Subject to 𝑆!#1& − 𝑆!# ≥ 𝑝!# ∀ 𝑗, 𝑘 ∈ 𝐾! " ∖ {(𝑗, |𝐾! "|)} ∀𝑗 ∈ 𝐽 𝐶)*+ − 𝑆 !|(# $| ≥ 𝑝 !|(# $| ∀𝑗 ∈ 𝐽 𝑆!# ≥ 0 ∀ 𝑗, 𝑘 ∈ 𝐾! " ∀𝑗 ∈ 𝐽 𝑆3# − 𝑆!4 ≥ 𝑝!4 − 𝑥3#!4 H 𝑀 𝑆!4 − 𝑆3# ≥ 𝑝3# − 1 − 𝑥3#!4 H 𝑀 ∀ 𝑖, 𝑘, 𝑗, 𝑙 ∈ 𝑖, 𝑘, 𝑗, 𝑙 𝑖, 𝑘 , 𝑗, 𝑙 ∈ 𝐾$ % ∧ 𝑖 < 𝑗} ∀𝑚 ∈ 𝑀 Linearized Disjunctive Programming Formulation

Slide 12

Slide 12 text

© Hajime Mizuyama J1 J2 J3 𝜇&# 𝑝&# 𝜇'# 𝑝'# 𝜇0# 𝑝0# 𝑘 = 1 M3 30 M1 40 M2 20 𝑘 = 2 M1 70 M3 40 M3 50 𝑘 = 3 M2 20 M2 60 M1 80 Illustrative Example: 0-1 MILP Formulation #1 Processing routes and processing times (min.) 𝑆&' − 𝑆&& ≥ 30 𝑆&0 − 𝑆&' ≥ 70 𝐶)*+ − 𝑆&0 ≥ 20 𝑆'' − 𝑆'& ≥ 40 𝑆'0 − 𝑆'' ≥ 40 𝐶)*+ − 𝑆'0 ≥ 60 𝑆0' − 𝑆0& ≥ 20 𝑆00 − 𝑆0' ≥ 50 𝐶)*+ − 𝑆00 ≥ 80

Slide 13

Slide 13 text

© Hajime Mizuyama Illustrative Example: 0-1 MILP Formulation #2 𝑆&' − 𝑆'& ≥ 40 − 500 H 𝑥&''& 𝑆'& − 𝑆&' ≥ 70 − 500 H 1 − 𝑥&''& 𝑆&' − 𝑆00 ≥ 80 − 500 H 𝑥&'00 𝑆00 − 𝑆&' ≥ 70 − 500 H 1 − 𝑥&'00 𝑆'& − 𝑆00 ≥ 80 − 500 H 𝑥'&00 𝑆00 − 𝑆'& ≥ 40 − 500 H 1 − 𝑥'&00 𝑆&0 − 𝑆'0 ≥ 60 − 500 H 𝑥&0'0 𝑆'0 − 𝑆&0 ≥ 20 − 500 H 1 − 𝑥&0'0 𝑆&0 − 𝑆0& ≥ 20 − 500 H 𝑥&00& 𝑆0& − 𝑆&0 ≥ 20 − 500 H 1 − 𝑥&00& 𝑆'0 − 𝑆0& ≥ 20 − 500 H 𝑥'00& 𝑆0& − 𝑆'0 ≥ 60 − 500 H 1 − 𝑥'00& 𝑆&& − 𝑆'' ≥ 40 − 500 H 𝑥&&'' 𝑆'' − 𝑆&& ≥ 30 − 500 H 1 − 𝑥&&'' 𝑆&& − 𝑆0' ≥ 50 − 500 H 𝑥&&0' 𝑆0' − 𝑆&& ≥ 30 − 500 H 1 − 𝑥&&0' 𝑆'' − 𝑆0' ≥ 50 − 500 H 𝑥''0' 𝑆0' − 𝑆'' ≥ 40 − 500 H 1 − 𝑥''0'

Slide 14

Slide 14 text

© Hajime Mizuyama J2 J1 J3 Optimal Schedule M1 M2 M3 J1 J1 J2 J2 J3 J3

Slide 15

Slide 15 text

© Hajime Mizuyama Corresponding Precedence Diagram Start (1, 1) (2, 1) (3, 1) (1, 2) (2, 2) (3, 2) (1, 3) (2, 3) (3, 3) 0 0 0 30 40 20 70 40 50 0 40 110 0 0 80 130 0 30 110 End 190 20 60 80

Slide 16

Slide 16 text

© Hajime Mizuyama Supplemental material on how to solve 0-1 MILP problems using PuLP (a Python library) and accompanying free solver CBC is available from the following link. Push “Open in Colab” button, then you can test it in Google Colaboratory environment. https://github.com/j54854/myColab/blob/main/pom2_6.ipynb How to Solve 0-1 MILP with PuLP (& CBC Solver)