A Dynamic Programming Algorithm with Dynamic Upper Bound for the Robotic Assembly Line Balancing Problem