Scheduling assembly tasks with caterpillar precedence constraints on dedicated machines