Logistics

Intelligent Dispatch for On-Demand Distribution

Intelligent Dispatch for On-Demand Distribution

The distribution on demand is an industry that is growing at a very high speed. New companies appear every day, especially in the market for food, beverages and deliveries of perishable products. And the competition is wild. Efficiency is a key metric in the “I want it all and I want it now” era and the most critical part is what happens from when a new order is placed until it is delivered.

Today I want to focus on the problem of sending new orders, that is, how to decide which courier service the order should be assigned to when an order enters the system. This is because the dispatch today is not addressed systematically. Optimizing the dispatch system can minimize delivery time and improve customer satisfaction.

The operating paradigm of companies that deliver on demand can be divided into two different types:

  1. Operations based on a single warehouse are those operations focused on a single tank. This warehouse has several dealers and the programming is done once to obtain an order list; usually grouping orders by area. Amazon Prime is a good example of this paradigm.
  2. Operations based on multiple warehouses are those operations that rely on choosing the order in one of the multiple warehouses and delivering it to a customer. In this case, the delivery people are scattered around the city, and once a new order arrives, it is assigned through a shipping process to one of the multiple delivery people. Companies such as Uber, Just Eat, Delivero, etc. operate this way.

The problem of dispatching is solved more or less satisfactorily in the first scenario thanks to the possibility of linking together a list of deliveries and considering it as a Traveling Seller Problem (Traveling Salesman Problem) with some pre-clustering restrictions (OK, I know that TSP is an expensive problem, but... come on, it's about Amazon).

On the contrary, in the second scenario, it is not so clear that the problem is being optimally addressed. How can a new incoming order be added to a running scenario? There are tons of variables to consider:

  • Can the courier make multiple collections before starting to deliver?
  • Can an already assigned order be reassigned to another courier service?
  • Do all orders have the same priority? (for example, all orders must be delivered no later than 30 minutes after placing them)
    Do orders need to be delivered by a particular vehicle?
  • ...
OnDemandDispatch03
Photo by Roman Mager/Unsplash

Modeling this scenario can be quite challenging, and that's why SmartMonkey has been working on this problem for a while. We call our solution Online Programming Optimization Model (OSOM) (Yes, branding isn't one of our strengths 😅, but phonetically it sounds like “incredible” and that's pretty fun). OSOM can model business restrictions and find a feasible solution to the dispatching problem.

In the simulation below, we have modeled a world where:

  • A courier service can be assigned multiple pickups and deliveries at the same time
  • and the first next service of each messaging service is fixed and cannot be reassigned in subsequent iterations.

The visualization contains twenty iterations of the world divided into two steps:

1. New incoming services are marked in gray.

2. Services are dynamically assigned to deliverers to optimize overall delivery time.

OnDemandDispatch04

Related tags:

Read more articles: