Constraints are used to make sure that routes follow setup principles established on your account. Failing to honor these constraints will make a Task Unviable for optimization, and the engine will not consider it for optimization. Unviable Tasks can still be assigned to Drivers, however, that will cause unconstrained routes,
Constraints in eLogii
What eLogii considers as constraints are:
Driver Schedules - This is one of the main factors eLogii will take into account when creating Routes. By default, eLogii will not force Drivers into overtime in order to complete Tasks. In case there is no more time in the Driver's schedule, or the time window is outside the Driver's schedule, Tasks will not be added to the Route and therefore will be omitted from the optimization. It is possible to bypass this, without removing schedule constraints by setting up overtime tolerances for Drivers. This will extend their schedules for a specified amount of time, should there be a need for overtime work in order to complete as many Tasks as possible. Overtime tolerance can also be set up on an individual level.
Vehicle Capacity - Along with the Driver Schedules, this is one of the most important constraints eLogii considers while optimizing. eLogii will not go over the set capacity constraint by default in a single run, however, if the maximum capacity utilization factor has been set to use more than 100% of the capacity within a single run, the system will then over-cap the Vehicle. but only up to the set amount.
Drive skills and Vehicle capabilities - These can limit which Tasks get delegated to which Drivers based on the matching skills/capabilities. In other words, Drivers cannot take on Tasks if they don't have the skill for it. Similarly, if the Vehicle the Driver is assigned to doesn't have the required capability to execute a specific Task, the Task will not be assigned to that Driver.
Time windows - Time windows refer to the approximate time within which a delivery can be completed. You can set up a time window for both the pickup and the delivery. A Task can be unviable if the optimization cannot be done without the time window being honored i.e. if the Task cannot be done within the imposed time constraint. Usually, either the Driver cannot get to the Task fast enough, or there are other Tasks before it and they cannot make it in time to execute the Task due to other constraints such as service durations (i.e. how long the Driver needs to be on the field while completing the Task). Time windows can be indirectly honored and bypassed a bit by setting up earliness and lateness tolerances.
Service duration - Service duration impacts the amount of time Drivers will spend in the field executing Tasks. The more time they spend doing one Task, the less time they'll have for taking on more Tasks.
Zones - Zones limit the area of operation, and eLogii will consider only the Drivers assigned to a specific Zone eligible for Task execution if the Task falls under the Driver's assigned Zone. In case there are Unviable Tasks, but you have enough Drivers available to execute those Tasks, usually, you need to check if those Drivers can handle Tasks that fall under a specific Zone.
Depot- If a Task originates from a Depot your Drivers aren't assigned to, then that Task cannot be handled by those Drivers and that's why it will not be optimized.
Teams- Drivers belonging to one team cannot be assigned Tasks belonging to another team they are not a part of. In case you have some unviable Tasks, but enough Drivers to handle them, it might be likely that there are not enough Drivers within one team to handle all those Tasks.
Route duration, Route distance limit, and Travel time limit - These directly limit the length of the route, the distance between Tasks, and how long time-wise the route should be. Often, when you have these constraints set, but you have unviable Tasks and Drivers who can realistically take on these unviable Tasks, because they have room in their schedules, and their vehicles are not over-capped, these Tasks are usually unviable because these constraints are preventing the unviable Tasks to be assigned (for example, adding more Tasks would mean that the Route duration limit will be broken, or Tasks are too far apart to be added to a Driver's route, which would go against the route distance limit constraint).
Route stop limit - Limits the maximum number of Tasks your Drivers can have daily. In case you have some unviable Tasks, and you're not sure why eLogii isn't assigning more Tasks to your Drivers because their schedules and Vehicles are not over-capped, check if you've set a Route stop limit for them which may be preventing eLogii from assigning more Tasks to them.
Speed Factor - The predefined speed factor can influence the overall Task delegation - the faster the Driver is, the more Tasks can be fit into their schedule. Consequently, the slower the Driver, the less Tasks will be assigned to them.
Traffic - This means that the denser the traffic on some roads during a specific time of day, the slower the Task execution, and as a consequence, the Driver can take on fewer Tasks.
Various Load factors - Factors such as package dimensions, or if your Vehicle can go over its preset capability also play a part in how many Tasks your Drivers can execute during their shift. If the Vehicle can be overloaded by 10% of its maximum capacity, then that means that the Driver can deliver more packages in a single run, without returning to the Depot for a reload.
Vehicle Profiles - Depending on your Vehicle profile setup, i.e. the Vehicle type and how much it can carry, it can greatly influence how roads are created. Depending on the Vehicle category, some roads may be off-limits to some types of Vehicles. For example, if your worker drives a large truck, eLogii will look for roads that do not have overpasses so that it won't be impossible for the truck to get around. Similarly, if your workers use bikes for transportation, then eLogii will look for bike-friendly reads.
Task Priority - This is a light constraint, but can be impactful in some cases.
Task and Postcode rules - Some of the preset rules may impact if the engine can consider some Tasks for optimization. For example, if you set it so that Tasks with specific Postcodes get automatically assigned to specific teams, and if you run the optimization and some Tasks are left unoptimized, most likely there are not enough Drivers in the team to be able to execute all Tasks.
Optimization Modes - Optimization modes such as Single-segment Optimization, Cost-based Optimization, and Cluster Optimization can change system behavior and how Tasks are delegated.
Location - If the Task is too far away and the system estimates it would take the Driver significantly more hours than their specified work time to get to the delivery location and return to the depot, then the Task will be left unoptimized. This might not happen if you have Multiday routes set up accordingly. Also, if you haven't geocoded your locations properly, sometimes your Tasks can appear on the wrong continent, in which case it's impossible to include those Tasks in the optimization. Sometimes, if the delivery location is on a neighboring island, the engine may not always be able to optimize those Tasks.
Task execution order and group- The pre-defined Task execution order and/or group may not always be optimal, and potentially a different execution order would allow for adding more Tasks to the route. You may end up with more unviable Tasks because the pre-defined execution order is making your Drivers spend more time driving from one location to another than they should, which is taking up their schedule, and consequently, they're making fewer deliveries than they could.
Allowed Weekdays and Task Frequency - The specific number of Tasks that should be done X number of times during a specific period, and/or Tasks that need to be done on a specific day of the week are considered as constraints by the system because they limit when the engine can consider those Tasks for optimization.
Unconstrained Routes
Once the route is set to "unconstrained" due to manual assignment, it will remain in that state until a subsequent re-optimization (either a global one through the blue Reoptimization button in the bottom left corner, or Route re-optimization from the route context menu) passes with all constraints in place
In other words, when an Optimization is run for that Route, an attempt is made to do it with all constraints - if all constraints can be followed then all the Tasks will be assigned to a particular Driver on the Route. If there are unviable Tasks already assigned to the Route, that means some of the Task constraints could not be honored, and they are removed so optimization can be completed.
Manually assigning a Task that otherwise couldn't fit in the Route marks it as unconstrained.
Drivers with unconstrained routes will have the Unconstrained tag, as shown in the picture below.
As mentioned above - constraints for a particular route are removed if a user manually assigns or reorders Tasks within a Route. If you manually assign some Tasks and their time window has long passed, they will be marked as late Tasks, and their time windows will be marked red (indicating that they are outside of the original time window). If you wish to get the Tasks assigned within their time windows again, you can unassign them from the current route and run Reoptimize.
Sometimes, your Tasks may appear unviable because certain constraints could not be honored, and therefore the Task couldn't be included in the optimization, and the more constraints you have set up, the more difficult it would be for the system to create a viable route and include as many Tasks as possible. There are other reasons why your Tasks may appear unviable, but it's usually because of constraints not being able to be honored.
Constraints are necessary because they will take into account important factors such as Driver Schedules and assign Drivers to Tasks that fit into their schedule and therefore avoid instances where Drivers are assigned to Tasks that are outside of their working hours i.e. Schedule. In case of manual reassignment or Task reordering eLogii will remove constraints needed to complete the desired action and update the ETAs in the route, as well as show violations for Driver schedule and Task time windows