Chapter 7: Job shops Sections 7.1 and 7.2 (skip section 7.3) IOE/MFG 543 Chapter 7: Job shops Sections 7.1 and 7.2 (skip section 7.3)
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
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
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
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
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 Cmax subject to ykj-yij≥pij (i,j)(k,j) Cmax-yij≥ pij (i,j) yij-yil≥pil or yil-yij≥pij (i,l) and (i,j) , i=1,…,m yij≥0
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
Section 7.2: The shifting bottleneck heuristic Example 7.2.2 job machine sequence processing times 1 1, 2, 3 p11=10, p21=8, p31=4 2 2, 1, 4, 3 8, 3, 5, 6 3 1, 2, 4 4, 7, 3
Example 7.2.2: Disjunctive graph 10 8 1,1 2,1 3,1 4 5 6 8 3 V U 2,2 1,2 4,2 3,2 3 4 7 1,3 2,3 4,3
Example 7.2.2: Iteration 1 M0=Set of machines already scheduled= Only include the conjuctive arcs Compute Cmax(M0)=22 10 8 1,1 2,1 3,1 4 5 6 8 3 V U 2,2 1,2 4,2 3,2 3 4 7 1,3 2,3 4,3
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
Ex. 7.2.2: Iter. 1. 1|rj|Lmax job j 1 2 3 p1j 10 4 r1j 8 d1j 11 12 8 d1j 11 12 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 1 2 3 p2j 8 7 r2j 10 4 d2j 18 19
Ex. 7.2.2: Iter. 1. 1|rj|Lmax job j 1 2 3 p3j 4 6 - r3j 18 16 d3j 22 Machine 3: Only 2 schedules! Lmax(3)=4 Machine 4: Only 2 schedules… Lmax(4)=0 job j 1 2 3 p4j - 5 r4j 11 d4j 16 22
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 8 1,1 2,1 3,1 4 10 5 6 8 3 V U 2,2 1,2 4,2 3,2 3 3 4 7 1,3 2,3 4,3
Ex. 7.2.2: Iteration 2 Compute Cmax(M0)=27 10 8 1,1 2,1 3,1 4 10 5 6 8 5 6 8 3 V U 2,2 1,2 4,2 3,2 3 3 4 7 1,3 2,3 4,3
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 1 2 3 p2j 8 7 r2j 10 17 d2j 23 24 job j 1 2 3 p4j - 5 r4j 13 24 d4j 21 27
Ex. 7.2.2: Iteration 2 Resequencing 10 8 Should we re-sequence machine 1 to decrease Cmax(M0)? 1-2-3 gives Lmax(1)=0 which is optimal since lateness of job 1 increases if it is delayed Do not resequence machine 1 1,1 2,1 3,1 4 8 5 6 8 3 V U 2,2 1,2 4,2 3,2 8 3 4 7 1,3 2,3 4,3 job j 1 2 3 p1j 10 4 r1j 8 d1j 17 18
Ex. 7.2.2: Iteration 3 Compute Cmax(M0)=28 10 8 1,1 2,1 3,1 4 10 8 8 5 10 8 8 5 6 8 3 V U 2,2 1,2 4,2 3,2 3 3 4 7 1,3 2,3 4,3
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 1 2 3 p3j 4 6 - r3j 18 d3j 28 job j 1 2 3 p4j - 5 r4j 13 25 d4j 22 28
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 8 1,1 2,1 3,1 4 4 10 8 8 5 6 8 3 V U 2,2 1,2 4,2 3,2 5 3 3 4 7 1,3 2,3 4,3
Ex. 7.2.2: Gantt chart 17 8 10 13 18 22 25 28 1 2 3 2 1 3 1 2 2 3
Algorithm 7.2.1: The shifting bottleneck heuristic 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.
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)
Example 7.2.3. Delayed precedence constraints job machine sequence processing times 1 1, 2 p11=1, p21=1 2 2,1 1, 1 3 4