Deleted last answer, I led myself down a rabbit hole trying to reason it out.
This shouldn’t be too difficult then. Provided that you can have an arbitrary number of time windows for each job, this should be relatively simple (I don’t know how 5 or 7 time windows will affect the number of iterations for convergence…):
- Define a time unit that spans the whole week e.g. in minutes you go from 1 on Sunday 00:01 to 10079 at 23:39 on Sat.
- Define each job once with multiple time windows that correspond to each 8am to 4pm on each day of the week.
- Run as normal.
Vehicles cannot do jobs that don’t have an open time window (time windows are considered hard constraints). You set it so that each vehicle runs for the whole week, no breaks. Once the 4pm time window closes, the algorithm will assume that the vehicle moves to its next job in the optimal route and just sits there until 8am when the new time window opens (provided that travel time is less than 16 hours; it will account for this). What your driver actually does in this period is an operational decision; (s)he might drive half way and then stop over, it doesn’t matter. Provided that they arrive at 8am for the next customer in the route, it’s valid.