Location maximum arrivals per timeslot
By default, OptiFlow assumes that when a vehicle arrives at a certain location, the vehicle can be serviced (goods being delivered or picked up) as soon as the time window has started of the first pickup/delivery on that location. In reality, the number of vehicles that can be serviced simultaneously at a given location is limited:
Depots have a limited set of available (un)loading docks. When many vehicles arrive at the depot location simultaneously, not all of them can be serviced as soon as the time window permits. The amount of vehicles that can be serviced simultaneously is limited by the number of docks or loaders/unloaders.
Usually, customers and or stores are only capable of servicing one vehicle at a time. There is usually only room for parking a single vehicle and the store personel needs to be available to service the vehicle.
The Maximum visits per timeslot feature in OptiFlow allows users to restrict the maximum number of arrivals per given time slot.
How does it work
When using this feature, a sequence of timeslots with a maximum occupation can be defined to apply for all orders and depots at this location. This means that any sequence of orders at this location will be scheduled to arrive within one of the provided time windows. Each time such a time window is used in the plan, the occupation is increased by one.
Time windows defined by timeslots
The time windows defined by these timeslots behave like a LOCATION_ARRIVAL
time window, effectively considering orders at this stop to be aggregated. The stop will, therefore, adhere to the timeslot as a whole. In particular it is the first order of the stop whose arrival time is restricted by the timeslot while following orders on the stop are unrestricted. This means the entire stop account for a single occupation of the timeslot.
These timeslots can be defined either on orders or depots. The image below illustrates what the input fields look like.
Timeslot start: defines when the first timeslot starts.
Duration: defines the duration of each timeslot in the sequence.
Repeats: defines the period of time between two consecutive timeslots.
May be left blank if occurrences is also left blank. In this case there will only be one timeslot defined by the start and duration.
Occurrences: defines how many timeslots are created.
For a single occurrence, leave this field empty.
Capacity: defines how many times this timeslot may be used.
In this example, 4 timeslots were created. Each timeslot, will have a capacity of 1. This means there can be 4 visits between 8:00 and 12:00.
Inconsistent data for orders/depots at the same location
When providing different settings for the same location the application will attempt to merge all settings together. This may very likely result in undesired behaviour. It is, therefore, recommended to keep these settings in sync across all locations.
Timeslots vs. time windows
Timeslots behave like time windows with a restriction on the usage across all orders/depots on this location. This means that when enabling this feature on a given location, no additional time windows may be supplied to any order/depot at this location.
Orders and depots
Timeslots are only supported on orders and specified depots. In particular this means that supplying timeslots on a location which is also the start or end location of a vehicle is not allowed.
Example 1: Start a plan in waves
In this example we will model a use-case where a single driver starts the workday every hour. Say our four drivers should start work between 08:00 and 12:00, we want one driver to start between 08:00 and 09:00, the next between 09:00 and 10:000 etc.
Since we cannot specify timeslots on the start of vehicles, we specify a depot on each vehicle and add the following timeslot definition.
The above definition tells the application that we have four intervals (occurences = 4).
[08:00, 09:00] - this is the first wave, one driver may start the depot service in this interval
first wave = occurrence 1/4
one driver may start = capacity 1
interval = [start, start + duration] = [08:00, 09:00]
[09:00, 10:00] - this is the second wave, one driver may start the depot service in this interval
second wave = occurrence 2/4
one driver may start = capacity 1
interval = [start + repeats, start + duration + repeats] = [09:00, 10:00]
[10:00, 11:00] - this is the third wave, one driver may start the depot service in this interval
third wave = occurrence 3/4
one driver may start = capacity 1
interval = [start + (repeats x 2), start + duration + (repeats x 2)] = [10:00, 11:00]
[10:00, 11:00] - this is the fourth wave, one driver may start the depot service in this interval
fourth wave = occurrence 4/4
one driver may start = capacity 1
interval = [start + (repeats x 3), start + duration + (repeats x 3)] = [11:00, 12:00]
The image below shows a valid usage of these timeslots.
As we see above the different colors resemble our waves. Note that the red and purple depot visits overlap in time, this is because the timeslots limit the start time and don’t bound departure times.
More strict
We could make our wave planning more strict by reducing the duration of the timeslots. In extremis we could set the duration to 00:01, which would cause all depots starts to be planned on the dotted lines (so in between [08:00, 08:01], [09:00, 09:01], etc.).
Example 2: Limit concurrent store visits
In this example we have a store which is open before noon (between 09:00 and 12:00) and in the afternoon (between 13:00 and 17:00). We have to deliver this location twice in the plan but we wish to avoid both deliveries being before or afternoon.
Note that both opening intervals here have a different duration such that we cannot define it as one sequence. This poses no problem, as we can simply define two sequences in this case.
The definition above gives us exactly two timeslots which are both only allowed to be used once.
[09:00, 12:00] - before noon = [start, start + duration]
[13:00, 17:00] - before noon = [start, start + duration]
Similar to the previous example, the application will not only schedule one store delivery for each of these intervals.
Of course it is possible to adjust the capacity for either timeslot sequences. In such a way we could also enforce a maximum of two deliveries before noon while still limiting the afternoon to a single delivery.
Upload/Export
For the upload there are 2 possibilities. Either all 5 parameters can be used, or Interval and occurrences can be omitted.
with 5 present parameters:
Format: <first_slot_start in hh:mm:ss> - <slot_duration in hh:mm:ss> - <slot_capacity> - <interval in hh:mm:ss> - <occurrences>
Example: 01:01:01 - 01:00:00 - 4 - 00:02:00 - 5
with 3 present parameters there are 2 possibilities (the interval and the occurrences are omitted):
Format: <first_slot_start in hh:mm:ss> - <slot_duration in hh:mm:ss> - <slot_capacity>:
Example: 01:01:01 - 01:00:00 - 4
Format: <first_slot_start in hh:mm:ss> - <slot_duration in hh:mm:ss> - <slot_capacity> - - :
Example: 01:01:01 - 01:00:00 - 4 - -