True story: A data science team at a delivery company tried training neural networks to automate driver dispatch for real-time delivery. They used manually generated plans from human dispatches as input. Sounds cool, right? Well, maybe. In reality, it simply replaced one type of neural network with another.
At Nextmv, we think a lot about these teams and the tools that they use. We also provide a platform that automates decisions for their operations across a variety of use cases: vehicle routing, staff scheduling, subscription box matching, pallet packing, resource allocation, and more.
It's a fun space to work in because everyone gets what it is (ever order pizza?), but few know how it's actually done (not an octopus with a headset, usually). People like to theorize. We get a lot of: how do ETAs work, or have you thought of using reinforcement learning to predict parking times, or is it true that drones will soon drop my burritos from the sky, heating them by atmospheric reentry?
A common misconception, however, is that the latest AI or machine learning doodads with GPUzmos are embedded in the platforms that solve operational problems. "Have you ever tried {a random forest | deep learning | genetic algorithms | ...}?” is a question you learn to field when you talk about optimization problems and platforms.
At the core of these systems are solvers. We think of a “solve” as a search and a “model” as a space. Solvers let you focus on solving the problem space (the model) instead of how to solve it (the search). They are the key to scaling up your operations and being more efficient.
Twenty years ago, every company became a tech company. Ten years ago, every company became a data company. Now, every company is becoming a decision company. And, we think this means the world of solvers paving a path to ubiquity.
But what are they exactly? Come with me.
What is a solver?
At its core a solver is a set of algorithms used to make decisions. Solver algorithms consist of generators and searchers, which generate potential decisions and then search through them to find the best one in the time given. There are lots of other pieces that make solvers successful on large problems, like how the solver learns from its search and how it picks areas to search, but those are deep dives for another day.
There are many types of solvers: integer programming, constraint programming, global optimization, second-order cone programming (no joke), etc. Nobody has a solid idea about what “semidefinite programming” is. Most of these solvers have been developed since the Big Bang of linear programming in the 1940s.
Despite what you might think, these types of solvers have little to do with programming and more to do with really complex math. (Try googling “linear programming” and behold the linear algebra and summation signs.) If you want to use a solver to tackle a particular class of problem (scheduling, routing, packing, matching, etc.) you have to choose the appropriate one and begin a journey through a maze of twisty passages. More on this shortly.
Put another way: Solvers are powerful dragon slayers. Many of them are incredibly fast and mature. Historically, they're hard to build, hard to understand, and hard to use. In short, they require way too much investment to set up, scale, integrate, and maintain. And if you need to solve hard problems, you need to learn how to use solvers.
This is why many people don't pick up optimization. It kind of stinks. But despite the naysaying you may be sensing, I do believe that more and more people will need solvers in their tech stacks.
How do you use a solver?
As I mentioned above, there are many solvers you can go and use today. But, as I also noted above, you're probably in for a challenge.
Once you’ve identified your problem and selected a solver, you then have to figure out how to structure your problem within the confines of said solver and learn how to interact with it. It’s looks a little bit like this:
And we haven’t even gotten to how you deploy it into your production systems. So how much time do you really have to invest here?
It’s also possible to build a solver. But almost no one does this. It’s usually tough going and expensive to maintain. The same logic applies to why many of us buy AWS over building our own server stack, or stand up a database over building one from scratch.
That said, we did build our own solver. We call it Hop and it sits at the heart of the Nextmv decision automation platform. Our solver thinks about decisions as code, so they look more like this:
We did this because we wanted a solver that looks and feels more like regular software than hard core math. We wanted one that works well in microservice and serverless architectures. We wanted a solver that is easier to use, easier to apply across classes of problems, and easier to reason about — and doesn’t require several years of higher education to operate.
And while I’d love to say we figured out all the problems and found solver perfection, such a rosy picture would probably make us an AI company. But we’ve learned a lot and are full steam ahead toward democratizing the solver space in a way we certainly haven’t seen before.
Do you need a solver?
We believe solvers are the key to scaling up business operations and being more efficient. They come into play when you care about the speed, scale, and quality of your operational decisions.
Make decisions more quickly. If orders are coming in every few seconds, you’ve got to be quick on your feet. Solvers are faster at deciding how to assign food deliveries to drivers, workers to time slots, and inventory to boxes. This frees up your staff to focus on more strategic work and drives greater customer satisfaction.
Make decisions at greater scale. It’s one thing to have a lone dispatcher figure out how to route 2 drivers to 10 stops. It’s another when you’re dealing with 10s of drivers and 1000s of stops. Solvers not only help scale your operations by helping businesses handle more volume, but they also expand and amplify the reach and capabilities of your existing teams (e.g., a vehicle dispatcher can grow from managing one region to multiple).
Make decisions that are more repeatable. Manual processes are hard to observe and trace. (Remember the neural net story I started this post with?) This is especially true at speed and scale. Solvers bring consistency to the decision automation process, and ensure decisions can be recreated and studied given the same input.
Solvers make operational decision-making more efficient in the same way online payment systems made buying things more efficient. They are a valuable asset when your business — big or small — needs to scale by tackling more complex problems and serving larger customer bases.
Where do you go from here?
Solvers are important to know about. Like data science tools, we think that the solver world is moving away from niche users toward a greater number of software engineers. We believe every developer should have a solver or two in their toolbox, and we think the solver space is in the midst of a big change for the better!
If you’d like to try Nextmv, you can create a free Nextmv Cloud account or contact us about our fully customizable SDK.