Dynamic programming strategies for the traveling salesman problem with time window and precedence constraints