A heuristic search algorithm for flow-shop scheduling