Lexicographic Optimization |
The ability to declare several optimization objectives and rank them |
Modeling Feature |
✅ |
Global cost optimization |
The ability to combine several KPIs to optimize into one “big” cost |
Modeling Feature |
✅ |
User defined tags to build objectives and constraints |
Users can use their own terms and referential when creating objects so these “tags” can be used to define constraints and objectives |
Modeling Feature |
✅ |
Incremental optimization from initial solution |
The ability to restart optimization from an existing solution, partially or totally imposed to the solver |
Modeling Feature |
✅ |
Re-optimization of routes during driving |
As drivers progress through their routes and complete their assignments, routes can be updated, locally or globally |
Modeling Feature |
✅ |
Predictive traffic, upstream of optimization |
Optimization relies on time-dependant distance & duration matrices to account for traffic variations throughout the day for each potential A to B trip |
Modeling Feature |
✅ |
Continuous Optimization (”Always-On”) |
Optimization problem is continuously optimized and can receive any kind of update as the algorithm runs |
Modeling Feature |
|
Pedestrian tours within vehicle tours |
For dense urban areas, ability to build local pedestrian tours within a larger “master” tour done with a vehicle |
Modeling Feature |
|
“OR” operator for constraints |
Building sets of constraints so that at least one of them is true, for advanced models |
Modeling Feature |
|
Automatic clustering of multiple similar stops into one |
When multiple stops are identical, clustering strategies are available to automatically group them into one |
Modeling Feature |
|
Group of stops can be linked to a PUDO, served first or last |
Multiple stops can be binded together to a PUDO, forcing them to be served before or after the PUDO |
Modeling Feature |
|
Minimizing total distance |
Objective function that minimizes the total traveled distance of all vehicles |
Optimization Objective |
✅ |
Minimize total working duration |
Objective function that minimizes the total working duration of all vehicles |
Optimization Objective |
✅ |
Minimize total vehicle used |
Objective function that minimizes the total number of vehicle used |
Optimization Objective |
✅ |
Minimize a “classic” cost |
Objective function that minimizes a weighted sum of distance, duration, vehicles and some penalties (e.g. extra hours, delays, etc) |
Optimization Objective |
✅ |
Minimize delays |
Objective function that minimizes delays according to soft time windows |
Optimization Objective |
✅ |
Optimized cost based on [vehicle type - stop type] combinations |
Cost functions can include penalties or bonuses for some vehicle - stop associations |
Optimization Objective |
✅ |
Optimized costs as piecewise linear functions |
Objective costs can be defined as piecewise linear functions to model complex effects and accelerations (Hinge Loss) |
Optimization Objective |
|
Multiple custom costs objectives |
User-defined list of custom cost objectives, lexicographically optimized |
Optimization Objective |
|
Maximize planned orders by priority rank |
Multiple objectives that maximize planned order by priority following the lexicographic principle |
Optimization Objective |
✅ |
Maximize planification of optional orders |
Objective function that maximizes planned optional orders. Following the lexicographic principle, this objective is after the Vehicle Minimization objective so that optional orders are used to fill in existing tours |
Optimization Objective |
|
Minimize vehicle used by priority rank |
Multiple objectives that minimize used vehicles by priority following the lexicographic principle |
Optimization Objective |
|
Maximize orders allocation by preference |
Objective function that maximizes the number of preferred vehicle - stop allocations based on user-defined preference matrices |
Optimization Objective |
✅ |
Minimize simultaneous visits per location |
Objective function that minimizes the number of simultaneous vehicles at a location, above its threshold |
Optimization Objective |
|
Optimize the fair distribution of quantities within routes |
Costs can be used to optimize the amount of any given quantities so it reaches a minimum threshold within each route |
Optimization Objective |
✅ |
Balancing duration or distance between tours |
Objective function that minimizes the differences in terms of distance / duration between tours |
Optimization Objective |
✅ |
Optimize visual aspect and territorial split |
Objective function that optimizes the looks of the tours on a map (well split territories) |
Optimization Objective |
|
Various speed profiles in same optimization |
Optimized vehicles can have their own speed profile |
Speed Profile |
✅ |
Car speed profile |
Vehicles distances and durations take into account the specifics of cars |
Speed Profile |
✅ |
Bike speed profile |
Vehicles distances and durations take into account the specifics of bikes |
Speed Profile |
✅ |
Motorbike speed profile |
Vehicles distances and durations take into account the specifics of bikes |
Speed Profile |
✅ |
Pedestrian speed profile |
Vehicles distances and durations take into account the specifics of pedestrians |
Speed Profile |
✅ |
Truck speed profile |
Vehicles distances and durations take into account the specifics of trucks (with attributes such as weight, height, etc.) |
Speed Profile |
✅ |
Crow-fly profile (test purposes) |
In the absence of explicit profile, crow-fly distances and durations are available |
Speed Profile |
✅ |
Toll roads avoidance |
Tours can avoid toll roads |
Speed Profile |
✅ |
Truck routing with dangerous goods |
Truck routes can take hasardous materials restrictions into account |
Speed Profile |
✅ |
Custom speed coefficient per vehicle |
Each resource can have its own speed coefficient that modifies the “standard” speed |
Resource Constraint |
✅ |
Free or fixed departure / arrival time |
Departure / arrival time can be explicitely defined, or let free for the algorithm to optimize |
Resource Constraint |
✅ |
Classic capacity constraints |
Tours can have a limited set of user-defined capacities |
Resource Constraint |
✅ |
Unlimited list of custom capacities |
User can define its own list of capacities to play with, using his own tags |
Resource Constraint |
✅ |
“At Least One Capacity” |
User can define a set of capacities per vehicle, with the constraint that at least one must be valid at all times (useful for flexible compartments) |
Resource Constraint |
✅ |
Soft capacity constraints |
Capacities can be “soft”, so that exceeding quantities are allowed but minimized |
Resource Constraint |
✅ |
Acceptable loading range before routes start |
Minimum and maximum loading rate at the beginning of each route |
Resource Constraint |
|
Min departure / max arrival time |
Each tour can have a minimum departure time and a maximum arrival time |
Resource Constraint |
✅ |
Acceptable range for departure and arrival |
Arrival and departure can each be constrained to a timeslot |
Resource Constraint |
✅ |
Acceptable range on route times |
A minimum and a maximum can be defined per tour on driving, working and service time |
Resource Constraint |
|
Starting / Ending point per tour |
Each vehicle can have his own starting / ending point |
Resource Constraint |
✅ |
Free starting / ending points |
Tours starting / ending points can be “free” so route starts / ends at the first / last stop |
Resource Constraint |
✅ |
Tours as free loops |
Tours can be built so their end is the same point as the departure, even when they’re not defined (free loops) |
Resource Constraint |
✅ |
Maximum working duration |
Total working duration per tour must not exceed the max working duration |
Resource Constraint |
✅ |
Soft max working duration |
Maximum working time can be defined as a soft constraint, and potential extra hours are then minimized |
Resource Constraint |
✅ |
Maximum travelled distance |
Total travelled distance per tour must not exceed the max travelled distance (useful for eletric vehicle autonomy) |
Resource Constraint |
✅ |
Break windows |
List of breaks that must be taken by resources (defined by a pre-defined timeslot and a duration) |
Resource Constraint |
✅ |
Break frequency rules |
Breaks can be defined as periods of rest at regular intervals of working time or travelled distance |
Resource Constraint |
✅ |
Max vehicle load for break |
Max vehicle load allowed for taking breaks (e.g. in pickup & delivery context, breaks happen only when vehicle is empty) |
Resource Constraint |
|
Maximum cumulated quantities over several tours |
Multiple tours can be bound together by a global constraint that limits their cumulated content in quantities or working time (e.g. max 37 hours of work per week) |
Resource Constraint |
|
Embedded multiple shifts per tour |
A tour can explicitely have multiple shifts within |
Resource Constraint |
✅ |
Multiple reloads allowed per shift |
During a shift, several reloads are possible at the depot |
Resource Constraint |
|
Operation durations policies that can ignore the first grouped operations, or all |
Some resources can ignore their first group of operation durations, or all (usage example: pre-loaded trailers) |
Resource Constraint |
|
Pickup or delivery orders |
Orders in a plan can be defined as pickups, deliveries, or both |
Order Constraint |
✅ |
Pickup & delivery & aknowledgement |
Orders in a plan can be made of a pickup, a delivery, and an aknwoledgment (3 stops) |
Order Constraint |
|
Alternative stop points |
In an order, stops can be defined as a list of alternative candidates stops instead of just one well identified stop |
Order Constraint |
✅ |
Orders made of multiple pickups and deliveries |
An order can contain several pickups and deliveries, with all pickups that must be done before deliveries |
Order Constraint |
✅ |
Order priority |
Orders can be assigned with a planning priority over other orders that will be used in lexicographic optimization |
Order Constraint |
✅ |
Optional orders |
Orders can be defined as optional (they’re only planned as long as it doesn’t add more vehicles) |
Order Constraint |
|
Single time window per stop |
A single time window can be provided for each stop |
Order Constraint |
✅ |
List of hard time windows |
A list of time windows can be specified for each stop. Planning outside of these time windows is forbidden |
Order Constraint |
✅ |
List of soft time windows |
A list of soft time windows can be specified for each stop. Planning outside of these time windows is allowed but generates a delay. Can coexist with hard time windows |
Order Constraint |
✅ |
Adjustable operating time |
An operation duration can be specified for each stop |
Order Constraint |
✅ |
Affinely cumulative operating time |
Operation durations can be the combination of a unique parking time per stop tag and individual operation time |
Order Constraint |
✅ |
Precedence constraints |
Additional time and costs can be specified for some transitions between stops |
Sequencing Constraint |
✅ |
FIFO / LIFO |
In a pickup & delivery context, deliveries can be done according to a FIFO / LIFO pattern |
Sequencing Constraint |
✅ |
Direct pickup & delivery |
In a pickup & delivery context, delivery can be enforced to be done directly after the pickup |
Sequencing Constraint |
✅ |
Stop group limitations |
Groups of consecutive stops (with the same tag) can be limited per tour (e.g. only one sequence of “loading” per tour) |
Sequencing Constraint |
|
Max detour between pickup & delivery |
In pickup & delivery context, a maximum duration can be specified between the pikcup and the delivery |
Sequencing Constraint |
✅ |
Incompatible stop tags |
Orders can be declared as incompatible so they cannot be planned in the same vehicle |
Assignment Constraint |
✅ |
Incompatible stop tags per resource type |
Orders can be declared as incompatible so they cannot be planned in the same vehicle, but only for certain types of vehicles |
Assignment Constraint |
✅ |
Simultaneous stop incompatibility |
In pickup & delivery context, some stops can be in the same tour but not at the same moment (simultaneous incompatibility) |
Assignment Constraint |
✅ |
Simultaneous stop incompatibility per resource type |
In pickup & delivery context, some stops can be in the same tour but not at the same moment (simultaneous incompatibility), but only for specific vehicles |
Assignment Constraint |
|
Required skills per order |
Orders can require a set of skills to be performed |
Assignment Constraint |
✅ |
Forbidden assignments |
Some orders - vehicle assignments can be forbidden |
Assignment Constraint |
✅ |
Groups of binded stops |
Some stops must be done by the same tour, which is determined by the algorithm |
Assignment Constraint |
✅ |
Groups of binded & sequenced stops |
Some stops must be done by the same tour, in a given non consecutive sequence, which is determined by the algorithm |
Assignment Constraint |
✅ |
Additional operation time for some resources |
Additional operation time can be specified for specific vehicle - stop combinations |
Assignment Constraint |
|
Maximum quantities planned |
All tours combined can contain a limited amount of quantity, per stop tag (e.g. max 10 tons of waste collected today, no matter where) |
Assignment Constraint |
|
Partial tour assignement |
Tours can be partially or totally injected upstream of the optimization |
Assignment Constraint |
✅ |
Timewindows dedicated to some resources only |
Orders can have timewindows that can only be “used” by specific resources |
Assignment Constraint |
|