Flow-shop Problems: A Heuristic Search Algorithm