# Scheduling when task duration longer than working interval

I'm trying to modify the job shop example for CP-SAT solver. (https://developers.google.com/optimization/scheduling/job_shop)

I'm limited to 8 hours working day, So I defined a list of NewIntervalVar() to represent non-working 12h everyday and weekend 24h+24h

I add this list to AddNoOverlap() for every machine interval. (Also, is there a better approach? probably I'm already made mistake with this approach)

non_working_intervals = add_non_working_hours(model)
for machine in all_machines:
model.AddNoOverlap(machine_to_intervals[machine] + non_working_intervals)


And this works fine if all tasks are less than 8 hours.. Obviously, the model can't fit 15h task in 8h gap and return infeasible..

The question is, how I can redefine the model so it can "automatically" start 15h task on one day and finish it the next day (after 12h). For 15h task it should be like: work 0-8 then gap(no work) 9-24 and then 24-31 (finish last 7h of 15h taks).

The only solution that comes to my mind is to split all tasks into smaller chunks before modeling, but then I should add a mechanism so all parts of a single task must go one by one without interruption (also, I don't know if it's possible to implement)

## 1 Answer

You should look at this example:

https://github.com/google/or-tools/blob/stable/ortools/sat/doc/scheduling.md#intervals-spanning-over-breaks-in-the-calendar