Two-machine flowshop scheduling with a secondary criterion
This paper develops mathematical programming formulations, a branch-and-bound algorithm, and a heuristic algorithm for solving the two-machine flowshop scheduling problem with the objective of minimizing total completion time, subject to the constraint that the makespan is minimum. The proposed branch-and-bound algorithm uses several lower bounding schemes, which are based on problem relaxations. Several dominance conditions are used in the algorithm to limit the size of the search tree. Results of extensive computational tests show that the proposed branch-and-bound algorithm is effective in solving problems with up to 35 jobs. For problems containing larger number of jobs, the proposed heuristic algorithm, which is also used as an upper bound in the proposed branch-and-bound algorithm, is quite effective in finding an optimal or near-optimal schedule. Planning and scheduling have been often considered in the literature and have many pratical issues as in production management and computers science. Works mostly deal with the optimization of a single criterion measuring either a production cost, the tardiness of jobs compared to due dates or production completion time. However, from a practical point of view the optimization of multiple conflictuous criteria yields to the computation of a more realistic schedule for the decision maker. In this paper, we investigate a particular workshop scheduling problem where all the orders have to be processed in the same manner. A schedule is optimal with regard to the completion time of the whole orders and to the total completion time. Due to the hardness of the tackled problem, both heuristic and exact algorithms are provided. We present new theoretical results as well as how they are implemented in an exact algorithm. Numerous computational experiments report the effectiveness of the proposed algorithms compared to the state-of-the-art algorithms.
flowshop branch-and-bound heuristics bicriteria scheduling integer programming dynamic programming