The Routing Optimization service is powered by an optimization engine designed to handle a huge variety of problems and is aimed at helping you find your optimal business solution by giving you control over how your problem is solved. The variety of problems is only limited by your creativity! Unique features of our Routing Optimization service include:
PICKUP & DELIVERY — solve pickup/delivery problems in the major categories of classic, replenishment, and last mile.
LONG PLANNING HORIZONS — plan ahead by hours, days, weeks, months, or even a full year.
MULTIDIMENSIONAL CAPACITIES — solve routing problems using your item quantities, weights, and/or volumes.
SCHEDULE COMPLEXITY — combine flexible time windows, rigid appointments, and breaks to maximize time usage.
DESCRIPTIVE COMPLEXITY — use arbitrarily long lists of arbitrary properties for orders, vehicles, locations, or items.
OPEN FLEETS — use vehicle-specific shifts, starting locations, and breaks to leverage your unique, ever-changing fleet.
Routing optimization is a more complex version of point-to-point routing — "Okay, Google: give me driving directions home" — where the goal is instead to solve one of the most mathematically complicated problems known to humanity: "Okay, MapAnything: find the optimal set of routes for my fleet of vehicles that services all of my customer orders and meets all my business objectives, SLAs, and KPIs." Visually, most people are familiar with the concept:
Building the routes seen above is the outcome of submitting a simple (minimize distance) routing problem to our Routing Optimization service. So, how does one construct a routing problem? There are a few key ingredients one needs first:
VEHICLES — the cars, trucks, bikes, or pedestrians that comprise your fleet.
LOCATIONS — the physical places your vehicles will be routed to provide service.
ORDERS — the requests for your services at a specific location over a time period.
ITEMS — the units of work ordered at a location, e.g. a package delivery, one LTL pickup, four hours of service.
CONSTRAINTS — the knobs that tune the solution objective, e.g. maximize revenue, minimize vehicles, etc.
Minimizing the total number of vehicles and total travel time are often a primary goal in most, if not all, routing optimization problems. However, there are other business objectives and tradeoffs that must be considered. For example, a salesperson might visit five more high-value leads in a day, but at the cost of reduced visits with high-priority customers. Instead of hiding tradeoffs from you, the Routing Optimization service gives you control via constraints that provide the ultimate — sometimes daunting — flexibility and power in solving your problem.
Imagine the case where you want a routing solution that penalizes lateness to scheduled appointments. But maybe you have the luxury of being an awesome customer service company and can be "a little late" without fear of damaging a customer relationship. In which case, it is acceptable to visit a big account lead before an appointment even if that means being late. In which case, you are looking for a solution like:
"Okay, MapAnything: find the optimal routes for my sales team where they will be penalized 25 penalty points for every 15 minutes they are late to a scheduled appointment."
Behind the scenes, this is exactly what our patented mathematical optimization algorithms do when they seek out the best solution based on the constraints you provide. Where the "best" solution is the one that captures most, and sometimes all, of your desired business logic and outcomes.
Constraints are given control over the routing solution by accruing penalty points every time a constraint is violated in some way. The concept is that the solution with the lowest number of penalty points is the best solution. Using constraints in this way results in having to tune your solutions, and is a bit of an art for your developers. But, once they get the hang of it, the options are limitless.
Visit the Constraint Library and the associated examples for each to see the full details.
Given real-world business needs, the Routing Optimization service takes the approach of running a complex optimization algorithm for a reasonable amount of time before returning a solution. To achieve this, we divide problems into synchronous and asynchronous jobs depending on the size and difficulty of the problem (request formats for asynchronous and synchronous calls are the same):
- Synchronous jobs are for smaller requests (less than 50 locations) and are processed immediately.
- Asynchronous jobs are for larger requests (more than 50 locations), and a
jobidis returned once a request is received and validated. The user can then poll the API Platform for job status and retrieve the results when the job completes. Once it completes, the response will be purged after 24 hours.
More details are provided in the detailed Optimization API documentation.