As you can see, we started with a shift, then to a day, moved on to a week, and we could then move on to bi-weekly, and so on. These constraints can be combined into one single concept.
If you think of time as one long endless axis, a week is simply a delimitation of that axis, or a chunk of that axis of time. The day that we just discussed earlier is exactly that: a chunk of 24 hours on the axis of time. So we could apply exactly the same logic to any time span we know of like the week, the month, the year, etc.
Therefore, this section is called horizon constraints. The horizon represents that chunk or span of time that the constraints will be measured against.
A horizon is determined by three important aspects:
- The span: the length of the horizon (a week, a month, a specific number of days, etc)
- The offset: when does that span start on that axis of time? Is it Monday, Sunday? If it’s longer than a week, which date do you start counting? You need to determine a date or a day that says: this is where we start counting.
- The step: this one is a little tricky. The step is the value to add to the offset to get to the next time span to validate. In most cases, you don’t need to think about this one because once you’ve defined your span to be a week for example, you simply count on that week and never overlap the next week (the step has the same value as the span). But in some industries like transportation, safety comes first. Therefore, there is a maximum number of worked hours that is measured against a ten-day period, but that is for any ten-day period. That means that if a planner looks at work from February 1st to February 10, the schedule would show an employee working say 50 hours. The planner also needs to look at the amount of work from February 2 to February 11 and make sure the sum of work still does not exceed the maximum. That would therefore be a constraint that has a horizon of 10 days and a step of 1 day.
It’s important not to confuse the definition of a constraint, or how you count the constraint, to the time span it applies on. For example, if you have a minimum number of weekends you need to count, the time span is not the weekend. The time span is how long you measure the weekends for. The weekend is in the conditions that make the constraint count or not.
Examples of Horizon constraints:
Maximum of 80 hours of work on a bi-weekly basis: In this case, the span is 14 days, the offset is a date in the past that is a Sunday or Monday (depending on your week start), and the step is 14 days.
Maximum of 140 hours of work per month: Span is monthly, offset is a date in the past that is usually in the first days of the month. You don’t want to count a monthly thing starting on the 29th of a month because it gets confusing for a planner when February comes along. Best practice is to pick the first of the month when you count monthly constraints.
Minimum of 5 days of rest any 25 days of work: Span is 25 days and the offset could actually be any day in the past since the constraint says ‘any 25 days’. The planner will have to measure all spans of 25 days across the schedule both when creating it as well as maintaining it.