Optimizing truck driver schedules with dependent working shifts, drivers' legislation, and multiple time windows