Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Lecture slides for POM 2-6

hajimizu
September 08, 2023

Lecture slides for POM 2-6

生産管理技術2の講義6のスライドです.

hajimizu

September 08, 2023
Tweet

More Decks by hajimizu

Other Decks in Technology

Transcript

  1. © 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
  2. © 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
  3. © 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
  4. © 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?
  5. © 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.
  6. © 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
  7. © Hajime Mizuyama Minimize Decision variables 𝐶)*+ 𝐶)*+ ∈ ℝ

    , 𝑆!# ∈ ℝ ∀ 𝑗, 𝑘 ∈ 𝐾! " ∀𝑗 ∈ 𝐽 Subject to 𝑆!#1& − 𝑆!# ≥ 𝑝!# ∀ 𝑗, 𝑘 ∈ 𝐾! " ∖ {(𝑗, |𝐾! "|)} ∀𝑗 ∈ 𝐽 𝐶)*+ − 𝑆 !|(# $| ≥ 𝑝 !|(# $| ∀𝑗 ∈ 𝐽 𝑆!# ≥ 0 ∀ 𝑗, 𝑘 ∈ 𝐾! " ∀𝑗 ∈ 𝐽 𝑆3# − 𝑆!4 ≥ 𝑝!4 ∨ 𝑆!4 − 𝑆3# ≥ 𝑝3# ∀ 𝑖, 𝑘, 𝑗, 𝑙 ∈ 𝑖, 𝑘, 𝑗, 𝑙 𝑖, 𝑘 , 𝑗, 𝑙 ∈ 𝐾$ % ∧ 𝑖 < 𝑗} ∀𝑚 ∈ 𝑀 Disjunctive Programming Formulation
  8. © 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
  9. © 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
  10. © 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
  11. © 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
  12. © 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'
  13. © 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
  14. © 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)