751 likes | 1.5k Views
Job Shop Scheduling. 1 . Modelling Job Shop Problems 2 . Shifting Bottleneck Heuristic 3 . Branch & Bound. Topic 1. Job Shop Scheduling Problems. Job Shops . Have m machines and n jobs Each job visits some or all of the machines
E N D
Job Shop Scheduling 1. Modelling Job Shop Problems 2. Shifting Bottleneck Heuristic 3. Branch & Bound
Topic 1 Job Shop Scheduling Problems
Job Shops • Have m machines and n jobs • Each job visits some or all of the machines • Only once (or sometimes multiple times if recirculation is allowed) • Customer order of small batches • Wafer fabrication in semiconductor industry • Hospital • Very difficult to solve
Job Shop Example • Constraints • Job follows a specified route of operations (Conjunctive constraints) • One job at a time on each machine (Disjunctive constraints) Machine 1 (1,1) (1,2) (1,3) Machine 2 (2,3) (2,1) (2,2) Machine 3 (3,1) (3,3) Machine 4 (4,3) (4,2)
Definitions • A schedule is non-delay if no machine is kept idle (or free resource is kept unused) when there is an operation available • A schedule is called active if -without delaying other operations- no operation can be completed earlier • For “regular” objectives:at least one optimal schedule is active (but not necessarily non-delay)
(2,1) Non-active Schedule Machine 1 (1,1) Machine 2 (2,3) (2,2) (2,1) Machine 3 (3,2) 0 2 4 6 8
Active Schedule, not Non-delay Machine 1 (1,1) Machine 2 (2,3) (2,2) (2,1) Machine 3 (3,2) 0 2 4 6 8
Non-delay schedule Machine 1 (1,1) Machine 2 (2,3) (2,1) (2,2) Machine 3 (3,2) 0 2 4 6 8
Graph Representation (J-on-N) • Each job follows a given route through the job shop • Picturing each job as a row of nodes: (i,j)=operation on machine i of job j (Conjunctive arcs A) (1,1) (2,1) (3,1) Source (1,2) (2,2) (4,2) Sink (2,3) (1,3) (4,3) (3,3)
Graph Representation • To model the machine constraints, introduce the arc set B (...), giving ‘a clique’ of bidirected arc-pairs on each machine • Full Graph G(N, AB) (Disjunctive arc-pairs B) (1,1) (2,1) (3,1) Source (1,2) (2,2) (4,2) Sink (2,3) (1,3) (4,3) (3,3)
Solving the Problem • Select one arc from each pair of disjunctive arcs: D out of B • Longest path in G(D)=G(N, A D) determines the makespan (1,1) (2,1) (3,1) Source (1,2) (2,2) (4,2) Sink (2,3) (1,3) (4,3) (3,3)
Feasibility of the Schedule • Are all selections feasible? (1,1) (2,1) (3,1) Source (1,2) (2,2) (4,2) Sink (2,3) (1,3) (4,3) (3,3) Resulting graph G(D) should be acyclic
Disjunctive Programming Minimize s.t.
Solution Methods • Exact solution • Branch & Bound • 20 machines and 20 jobs • Dispatching rules (16+) • Shifting Bottleneck • Search heuristics • Tabu, SA, GA, etc.
Topic 2 Shifting Bottleneck Heuristic for Job Shop Scheduling Problems
Shifting Bottleneck • Minimize makespan in a job shop • Let M denote the set of machines • Let M0 M be machines for which disjunctive arcs have been selected • Basic idea: • Select a machine in M - M0 to be included in M0 • Sequence the operations on this machine
Example • Three jobs on four machines • Processing job 1 (or 2) without delay requires 22
Iteration 1 10 8 (1,1) (2,1) (3,1) 4 0 0 8 3 5 6 Source (2,2) (1,2) (4,2) (3,2) Sink 0 3 7 4 (1,3) (2,3) (4,3)
Selecting a Machine • Set up a non-preemptive single machine maximum lateness (1||Lmax) problem for Machine 1: • Consider rj as earliest starting time and djas latest finish time Optimum sequence is 1, 2, 3 with Lmax(1) = 5
Selecting a Machine • Set up a non-preemptive single machine maximum lateness (1||Lmax) problem for Machine 2: Optimum sequence is 2, 3, 1 with Lmax(2) = 5
Selecting a Machine • Similarly, Either Machine 1 or Machine 2 is the bottleneck
Iteration 2 10 8 (1,1) (2,1) (3,1) 4 0 10 0 8 3 5 6 Source (2,2) (1,2) (4,2) (3,2) Sink 0 3 3 7 4 (1,3) (2,3) (4,3)
Selecting a Machine • Set up a non-preemptive single machine maximum lateness (1||Lmax) problem for Machine 2: Old: New: Optimum sequence is 2, 1, 3 with Lmax(2) = 1
Selecting a Machine • Set up a non-preemptive single machine maximum lateness (1||Lmax) problem for Machine 3: Optimum sequence is 1, 2 with Lmax(3) = 1
Selecting a Machine • Similarly, Either Machine 2 or Machine 3 is the bottleneck
8 8 Iteration 3 10 8 (1,1) (2,1) (3,1) 4 10 0 0 8 3 5 6 Source (2,2) (1,2) (4,2) (3,2) Sink 0 3 3 7 4 (1,3) (2,3) (4,3)
Shifting Bottleneck Heuristic 1. M0:=; G=(N, u, v, A); Cmax := longest path-length in G between u and v 2. iM-M0 do // solving a single machine problem a. for all operations o=(i,j) on machine i do - find longest paths u-o and o-v of lengths lu,o and lo,v, say, - define release time rij = lu,o, due date dij = Cmax - (lo,v -pij) b. for this single machine problem on i: determine L*max(i) with choices D*(i) 3. k := arg max iM0 L*max(i) ; // decide for bottleneck machine k Insert arcs D(k)=D*(k) in G and update Cmax// Cmax may increase 4. iM0-{k} do // Re-sequencing ‘decided’ machines a. remove D(i) from G and recompute Cmax b. recompute D*(i) as in step 2 above c. insert D(i)= D*(i) in G and update Cmax// Cmax may decrease 5. M0:= M0 {k}; if M0<M then (add delayed precedence and) return to step 2.
Discussion • Procedure continues until all disjunctive arcs have been added • Watch out for cycles, because of other (scheduled) machines • delayed precedence constraints may be required, see example in book • Very effective • Relatively fast • Good solutions • More general Job Shop problems can be solved as well • ‘Just a heuristic’ • No guarantee of optimum • The subproblem Max. Lateness, 1 | rj , prec | Lmax,is NP-hard
Discussion • Shifting bottleneck can be applied generally • Basic idea • Solve problem “one variable at a time” • Determine the “most important” variable • Find the best value of that variable • Move on to the “second most important” …. • Here we treat each machine as a variable
Topic 3 Branch & Bound for Job Shop Scheduling Problems
Branch and Bound • Minimize makespan • Notation • operation (i,j)has duration pij • Let W denote operations whose predecessors have all been scheduled • Let rij be the earliest possible starting time of (i,j) in W. • FIRST SUBJECT: How to branch toactive schedules
Branching • In the optimal schedule each machine has some order for its operations: let machine i has first (i, j1), then (i, j2) etc. • In partial schedules, B&B subproblems at level k, it is decided for [some] machines i, in ancestor B&B nodes, which operations are (i,j1), (i,j2),..., (i, jk(i) ) [possibly k(i)=0 –if i has no decisions yet] Ancestor choices New choices: for some machine i* decide on a next operation (i*, jk(i)+1)=(i*, j''') (i*, jk(i)+1)=(i*, j'') (i*, jk(i)+1)=(i*, j') !Avoid partial schedules that are not active!
Which operations can be next in active schedule? If active, a schedule can have (i*, j) ' as the next i*-operation, but not (i*,k) ' Machine i* (i*, j) (i*, j0) (i*, j0) (i*,k) 0 t ri* j t() ri* k
(i1, j) (i*, j0) ' is a subset of , why? Suppose (i*, j) in ' is not part of : i.e., some other operation, say (i1, j) is first for job j. (i1, j) is by definition in and to be scheduled before (i*, j) Gant-Chart of operations of j: and of j0: (i*, j) t() Then: ri* j0 + pi* j0 = t() <= ri1 j + pi1 j <= ri* j, showing that (i*,j) is cannot be part of
Generating Active Schedules • Step 1. (Initialize) • Let contain the first operations of each job; rij = 0 for all (i,j) ; • Step 2. (Machine selection) • Compute of current partial schedule: time • i* =associated machine • Step 3. (Branching) // extends current schedule in all active ways • Let ’ consistof operations (i*, j) on machine i*with • For each (i*, j) in ’ extend current partial schedule with (i*, j) next on i* • For eachthus generated, extended partial schedule: • a.delete (i*, j) from , insert immediate follower (k, j) in , • b. return with this schedule, as current, to step 2.
ancestor choices Some machine i* decides on next operation (i*, jk(i)+1)=(i*, j''') (i*, jk(i)+1)=(i*, j'') (i*, jk(i)+1)=(i*, j') Generating active schedules, that is not all choices, only operations (i*, j' ) of ' Branching Tree
root 22 (1,1) (1,3) Branch at level 1 for possibilities W’ of (1, j1) at i* =1 On Example 10 8 (1,1) (2,1) (3,1) 4 0 6 8 3 5 0 Source (2,2) (1,2) (4,2) (3,2) Sink 0 3 7 4 (1,3) (2,3) (4,3) Level 1
Level 1: when (1,1) is first on machine 1 10 8 (1,1) (2,1) (3,1) 4 10 0 10 0 8 3 5 6 Source (2,2) (1,2) (4,2) (3,2) Sink 0 3 7 4 (1,3) (2,3) (4,3) Cmax >= 24 Disjunctive Arcs
Level 1: when (1,3) is first on machine 1 10 8 (1,1) (2,1) (3,1) 4 0 0 8 3 5 6 Source (2,2) (1,2) (4,2) (3,2) Sink 4 0 4 3 7 4 (1,3) (2,3) (4,3) Cmax >= 26 Disjunctive Arcs
Branching Tree Start, no disjunctive arcs LB=22 (1,1) scheduled first on machine 1 LB = 24 (1,3) scheduled first on machine 1 LB = 26
Next branching: at subproblem (1,1) 10 8 (1,1) (2,1) (3,1) 4 0 10 8 6 3 5 10 0 Source (2,2) (1,2) (4,2) (3,2) Sink 0 3 7 4 (1,3) (2,3) (4,3) Level 2 root 22 (1,1) (1,3) (2,2)
Level 2: Extending to (2,2) as first on machine 2 As yet no new disjunctive Arcs 10 8 (1,1) (2,1) (3,1) 4 10 0 8 0 8 3 5 6 Source (2,2) (1,2) (4,2) (3,2) Sink 8 0 3 7 4 (1,3) (2,3) (4,3) Still LB=24
Branching Tree LB=22, no disjunctive arcs (1,1) scheduled first on machine 1 LB = 24 (1,3) scheduled first on machine 1 LB = 26 (1,1) first on M1 and (2,2) first on M2 LB = 24
Lower Bounds • Lower bounds • Length of critical path in G(D’). • Very quick but not very tight • Linear programming relaxation. • Less quick but tighter • Maximum Lmax over all machines • Likein Shifting-Bottleneck Heuristic • slowest (m NP-hard problems),but tightest !