A progressive heuristic search algorithm for the cutting stock problem