Specifying frequency or minimum gap between repeat services

We have a route optimization problem with month-long planning horizon. It’s specified as 1 vehicle per weekday, so 20 vehicles each with an 8 hour shift.

We have services, some of which are repeated within that timeframe, but have varying visit frequencies and time availability windows. For example:

serviceA is:

  • available mon-fri, 8am-11am
  • must be visited once a week (so 4 times in the solution)

However, if visited on a Friday then should not be visited again until the following Thu or Fri, as a delivery on the following Monday (just 3 days later) would be too soon.

serviceB is:

  • available wed-fri 2pm-6pm
  • must be visited once ever 2 weeks (so twice in the solution)

Again, if visited at a Fri at the end of week 2, should not be visted again for approx 2 weeks, as two large deliveries within a relatively small timeframe would be unaccepbtable.

My question is if there is any way to specify the “frequency” or “spacing” aspect of the problem? If not in GraphHopper, might it be possible with jsprit?

As suggested in comment here I think a “not_in_same_route” relation would help.