IOE/MFG 543 Chapter 7: Job shops Sections 7.1 and 7.2 (skip section 7.3) 1 Job shop (Jm) m machines, n jobs Each job has its own routing on the machines – The flow shop is a special case where all the jobs follow the same route (recall F3||Cmax is NP-hard) – If a job is to be processed on the same machine more than once => recirculation 2 Section 7.1. Disjunctive graph for Jm||Cmax In Jm||Cmax there is no recirculation All jobs start at a source node U and finish at the sink node V Node (i,j) is the processing of job j on machine i – Let N denote the set of nodes The arc from node (i,j) has weight pij – The arcs going out of the source node have zero weights – Let A denote the set of arcs 3 Disjunctive graph (2) For each machine i connect all nodes of the form (i,j) and (i,k) with two arcs (one going in each direction) – The arcs for each machine form a clique, i.e., a sub-graph in which any two nodes are connected to one another The two arcs are disjunctive, i.e., only one of them is utilized – – If the operation (i,j) precedes operation (i,k) then only the arc from (i,j) to (i,k) and not the arc from (i,k) to (i,j) is utilized Let B denote the set of disjunctive arcs 4 Using the graph to find a feasible schedule Select one disjunctive arc from each pair of disjunctive arcs If the selection results in an acyclic graph, i.e., contains no cycles, then the corresponding schedule is feasible The makespan of the schedule is determined by the critical path method 5 Minimizing the makespan To minimize the makespan we need to select the arcs that results in a schedule that minimizes the makespan Disjunctive program – yij is the starting time of operation (i,j) minimize subject to Cmax ykj-yij≥pij Cmax-yij≥ pij (i,j)(k,j) (i,j) yij-yil≥pil or yil-yij≥pij (i,l) and (i,j) , i=1,…,m (i,j) yij≥0 6 Minimizing the makespan (2) Solving this problem can be achieved by a branch and bound algorithm – The algorithm is computationally expensive even for a problem with a modest number of jobs and machines Use heuristic methods instead 7 Section 7.2: The shifting bottleneck heuristic Example 7.2.2 job 1 2 3 machine sequence 1, 2, 3 2, 1, 4, 3 1, 2, 4 processing times p11=10, p21=8, p31=4 8, 3, 5, 6 4, 7, 3 8 Example 7.2.2: Disjunctive graph 10 1,1 8 2,1 3,1 4 5 6 0 U 0 2,2 8 1,2 3 4,2 3,2 0 1,3 4 2,3 7 V 3 4,3 9 Example 7.2.2: Iteration 1 M0=Set of machines already scheduled= Only include the conjuctive arcs 10 1,1 8 2,1 3,1 4 5 6 0 U 0 2,2 8 1,2 3 4,2 3,2 0 1,3 4 2,3 7 V 3 4,3 Compute Cmax(M0)=22 10 Ex. 7.2.2: Iter. 1 Which machine to sched. first? Solve 1|rj|Lmax for each machine i – – Release dates rij=longest path from U to node (i,j) Due dates dij= Cmax(M0) - longest path from (i,j) to V + pij The machine with the largest minimum Lmax is the bottleneck machine 11 Ex. 7.2.2: Iter. 1. 1|rj|Lmax Machine 1: – How do we solve this problem? – Branch and bound algorithm gives Lmax(1)=5 Machine 2: – Branch and bound algorithm gives Lmax(2)=5 job j p1j r1j d1j 1 10 0 10 2 3 8 11 3 4 0 12 job j p2j r2j d2j 1 8 10 18 2 8 0 8 3 7 4 19 12 Ex. 7.2.2: Iter. 1. 1|rj|Lmax job j Machine 3: p3j – Only 2 schedules! r3j Lmax(3)=4 d3j Machine 4: – Only 2 schedules… job j Lmax(4)=0 p4j r4j d4j 1 4 18 22 2 6 16 22 3 - 1 - 2 5 11 16 3 3 11 22 13 Ex. 7.2.2: Iter. 1 Which machine to sched. first? (2) Machines 1 and 2 both have a minimum Lmax of 5 We can choose either machine so let’s pick machine 1 => M0={1} 10 1,1 U 0 2,2 2,1 10 0 8 1,2 3 0 8 4,2 3,1 4 5 6 3,2 3 1,3 4 2,3 7 V 3 4,3 14 Ex. 7.2.2: Iteration 2 10 1,1 U 0 0 2,2 8 1,2 3 4,2 3,1 4 5 6 3,2 3 1,3 2,1 10 0 8 4 2,3 7 V 3 4,3 Compute Cmax(M0)=27 15 Ex. 7.2.2: Iteration 2. 1|rj|Lmax Machine 2 – B&b algorithm gives Lmax(2)=1 w/sequence 2-1-3 Machine 3 – Lmax(3)=1 w/sequences 1-2 and 2-1 Machine 4 – Lmax(4)=0 w/sequence 2-3 Add machine 2 to M0 so M0={1,2} job j p2j r2j d2j 1 8 10 23 2 8 0 10 3 7 17 24 job j p4j r4j d4j 1 - 2 5 13 21 3 3 24 27 16 Ex. 7.2.2: Iteration 2 Resequencing Should we resequence machine 1 to decrease U Cmax(M0)? 1-2-3 gives Lmax(1)=0 – 1,1 0 2,2 8 2,1 8 0 8 1,2 3 4,2 3,1 4 5 6 3,2 8 0 which is optimal since lateness of job 1 increases if it is delayed Do not resequence machine 1 10 1,3 4 2,3 7 V 3 4,3 job j 1 2 3 p1j r1j d1j 10 0 10 3 8 17 4 0 18 17 Ex. 7.2.2: Iteration 3 10 1,1 0 U 0 0 2,2 3,1 4 5 6 8 8 1,2 3 4,2 3,2 3 1,3 2,1 10 8 8 4 2,3 7 V 3 4,3 Compute Cmax(M0)=28 18 Ex. 7.2.2: Iteration 3. 1|rj|Lmax Machine 3 – Lmax(3)=0 Machine 4 – Lmax(4)=0 w/sequence 2-3 job j p3j r3j d3j 1 4 18 28 2 6 18 28 3 - job j p4j r4j d4j 1 - 2 5 13 22 3 3 25 28 19 Ex. 7.2.2: Iteration 3 Conclusion Sequencing machines 3 and 4 does not increase the makespan of Cmax(M0)=28 – No need to try to resequence 10 1,1 0 U 0 0 2,2 2,1 3,1 8 1,2 3 4,2 3 1,3 4 4 4 8 10 8 8 2,3 7 5 5 6 3,2 V 3 4,3 20 Ex. 7.2.2: Gantt chart 8 10 0 1 2 1718 13 2 22 25 28 3 1 3 1 2 2 3 21 Algorithm 7.2.1: The shifting bottleneck heuristic 1. 2. 3. 4. 5. 6. Initialization. Set M0=. Graph G contains only the conjunctive arcs Solve a maximum lateness problem for each machine that has not been sequenced. Sequence the machine that has the maximum minimum maximum lateness Add it to M0 and add the disjunctive arcs to G for that machine Resequence all machines in M0 one at a time, except the last added machine. Modify the disjunctive constraints accordingly Stop if all machines have been sequenced, otherwise go to step 2. 22 An implementation issue with the heuristic Recall: The disjunctive constraints must be selected such that the resulting graph is acyclic In the SBH heuristic a cycle can be created This can be prevented by adding precedence constraints (arcs) having a delay (a positive weight) 23 Example 7.2.3. Delayed precedence constraints job 1 2 3 4 machine sequence 1, 2 2,1 3 3 processing times p11=1, p21=1 1, 1 4 4 24