A Fast Taboo Search Algorithm for the Job Shop Scheduling Problem

In this lecture note we initially present the Job Shop Scheduling Problem (JSSP) in a slightly different context and re-introduce the notions of critical paths and blocks. We then move on to describing an algorithm for obtaining near-optimal solutions to JSSP’s, based on a local search strategy called Taboo Search. Taboo Search makes extensive use of neighbourhoods and it is of great importance to the algorithm to limit the size of these neighbourhoods, as this lecture note will focus on. We will ease reading by extensive use of examples. 1. A Fast Taboo Search Algorithm 1.1. Problem definition The problem we are looking at is the Job Shop Scheduling Problem or JSSP. In this problem we have a set of jobs, J . Each job consists of a number of operations. The set of all operations is called O. We also have a set of machines, M , on which the individual operations can be processed. The size of each of the three sets will vary with the specific instance of the problem we are working with, but for the sake of generality we will be referring to the size of J as n, the size of O as o, and the size of M as m. A summarised description of the introduced variables is given in Appendix A.1. Our object is to minimise the makespan of the jobs, that is to minimise the time it takes to complete all the jobs. In order to illustrate our points better, we will now introduce an example to support this notation. In our example we have 3 jobs (n = 3), 2 machines (m = 2), and 12 operations (o = 12). See also Figure 1. As indicated by the example, the jobs don’t necessarily have the same amount of operations, but we will number the operations in O so that operations of the same job are next to each other in the set. We will also order the operations of a single job, so that the operations that are to be performed earlier are indexed with a lower number than operations that are to be performed later. If, for instance, the first job has 7 operations and the second job has 3 operations, then the operations of job 1 would be numbered 1