Uber-like app routing problems. How to solve them?
Uber-like app routing problems. How to solve them?
Routing Issues In Uber-Like Apps: How To Solve Them?
August 19, 2019
5 min read
Working on the technical side of a new product, developers rarely see the direct impact of their efforts on the startup's success. This article shows how Uber-like app development goes hand-in-hand with company growth. You will read about the challenges and solutions for building on-demand multiple delivery apps.
The rise of on-demand services
The total revenue of the on-demand delivery industry will reach $335 billion by the year 2025.
With the high popularity of supply services, on-demand delivery startups pop-up every day. They belong to various industries. Food and gifts delivery, on-demand medical and beauty services, transportation, and taxi companies. All these businesses are based on the concept of on-demand solutions.
Economics uberization is a new trend in the startup and business field.
Uber-like apps provide high-quality services saving customers' time and money. Platform-based companies (Airbnb, Grab, Lyft) caused a revolution in their business domains.
The desire to attract customers makes more and more founders build their Uber-like apps. I worked on such a project as a Senior software developer, and I'll share my experience.
You will read about
the structure of on-demand multiple delivery apps
Uber-like software development technologies
pitfalls of routing algorithm optimization
3 categories of on-demand delivery apps
Let's start the discussion by identifying 3 types of Uber-like startups.
All the mentioned business models have specific pros and cons. I'd like to talk about the second variant, which means business to consumer relations.
This model provides several benefits:
<medium>freedom<medium> (drivers feel free to take delivery orders or refuse)
<medium>speed<medium> (it's easier for a company to find couriers in a specific area)
<medium>convenience<medium> (service provider works with many freelance couriers)
<medium>quality<medium> (ratings ensure high standards of client service)
<medium>effectiveness<medium> (company brand helps to promote many couriers)
So, B2C Uber-like app can be quite profitable and deliver almost any type of goods. But the technical side of its development includes several challenges. Let's talk about them.
Briefly review of uber-like app architecture
Could you recall the on-demand apps working principle? A customer lets the company know he/she needs service. So, the app asks where the user is. Then, the system finds a nearby driver and shows the customer the car will arrive in minutes. In the end, the app asks for users feedback.
What technologies does the delivery app rely on?
To unlock the power of an on-demand mobile app, keep in mind its main parts:
As for the server part, the most popular programming languages are Node.js, Java, C++, C#, Python. There are many different adapters for payments implementation (Stripe, Braintree, Paytm, PayPal mobile SDK). Other required features are push notifications, user profile, SMS, etc.
What does prevent Uber-like apps from achieving success on the Apple Store and Google Play? Let's consider 2 main challenges.
Challenge #1: vehicle routing problem
An unoptimized routing algorithm causes the gap between multiple delivery apps and the top-ranking. To find the optimal trip for a driver, the system needs to solve a great mathematical challenge.
<medium>receiving of all parameters<medium> (travel, time, traffic) for all points of all deliveries
<medium>permutation of all combinations<medium> in the resulting chart, taking into account optimizations and constraints to eliminate unnecessary options
Program implementation from the geometric (simplified) point of view leads to losing sight of crucial parameters. That causes slaw deliveries, poor quality of services and customers' disappointment. Thus, an optimized routing program is essential for the effectiveness of business processes and positive brand reputation.
Routing module development from scratch using Node.JS isn't a good idea since this task requires high-performed (e.g. parallel) calculations. As for me, Google OR-tools is the best way to solve the routing problem. The library is widely used for solving combinatorics problems. So, it's a powerful tool for multiple delivery routing optimizations.
Reasons to use Google or-Tools
<medium>Open Source project:<medium> free license and regular updates
<medium>Orientation:<medium> part of the library is directly intended to solve transport problems
<medium>Flexibility:<medium> it's possible to set different constraints and modify the technology
<medium>Authoritative source:<medium> solution by Google, which is compatible with many other technologies
<medium>Stability and productivity:<medium> the algorithms are pre-optimized for specific multi-threaded tasks.
<medium>Infrastructure control:<medium> the final solution is a simple program that can be deployed in any convenient form (starting from a manual installation, ending with Docker) in any cloud service. That means maximum control and minimal infrastructure costs
So, Freshcode team prefers Google OR-tools as a basis for the algorithm for finding the optimal route. Look at the example below.
The picture demonstrates a simple route choosing task.
Challenge #2: location problem
In addition to routing optimization, the system requires a distance matrix. It's necessary to obtain data on traffic between the delivery points.
The possible software implementations are
Google Distance Matrix API
Mapbox Matrix API
I recommend the last option as the most affordable solution. OpenStreetMap and its API provide the required functionality within a tight budget.
<medium>Stability:<medium>15-year project contains a large number of tools and third-party services for expanding the functionality
<medium>Extensive support:<medium> over 1 million users contributing to the development
<medium>Flexibility:<medium>the opportunity to customize tools and additional services
<medium>Low cost:<medium>affordable solution in terms of workloads compared to the Google Distance Matrix API and Mapbox Matrix API. The only costs are OpenStreetMap deployment
Can professional software development make business grow?
Google-OR tools and OpenStreetMap are very effective for route search algorithm optimization. The routing module is capable to select the best possible transport options and provides comfortable working conditions for couriers. It has a huge impact on the commercial success of on-demand multiple delivery companies.
Business profits from routing optimization
Commercial benefits right after system update
Delivery speed greatly increases
Drivers enjoy convenient and effective routing
Uber-like app stands out in the competition
Future project development may include certain module improvements. For example, separation of individual clusters, regions, and areas. As the users can be located in specific territories, the drivers won't get notifications about orders at a distance of over 50 km from their current position.
On-demand delivery companies are increasingly empowering local companies. They help to reach more local customers and become independent from global logistics leaders.
Are you ready to build your on-demand delivery app? Book a free consultation by Freshcode team and make your idea happen.
Don't miss future tech insights on our blog, I'll write about Google-OR tools and OpenStreetMap in detail. Stay in touch!