Many optimization problems of practical interest are computationally intractable. Therefore,a practical approach for solving such problems is to employ heuristic (approximation) algorithms that can 6nd nearly optimal solutions within a reasonable amount of computation time. An improvement algorithm is a heuristic algorithm that generally starts with a feasible solution and iteratively tries to obtain a better solution. Neighborhood search algorithms (alternatively called local search algorithms) are a wide class of improvement algorithms where at each iteration an improving solution is found by searching the “neighborhood” of the current solution. A critical issue inthe designof a neighborhood search algorithm is the choice of the neighborhood structure, that is, the manner in which the neighborhood is de6ned. As a rule of thumb, the larger the neighborhood, the better is the quality of the locally optimal solutions, and the greater is the accuracy of the 6nal solution that is obtained. At the same time, the larger the neighborhood, the longer it takes to search the neighborhood at each iteration. For this reason, a larger neighborhood does not necessarily produce a more e