What is a solver?
When we build a mathematical optimization formulation - a model - we are describing a planning problem in terms of variables (what can change), constraints (rules we can and cannot break), and objectives (what best looks like). Instead of calculating the answer ourselves, we employ a specialist piece of software called a MILP solver, purpose-built for this exact application.
Here is a step-by-step explanation of how Ponco uses this technology.
- Ponco software takes your inputs and the real-world data and converts them into a mathematical model.
- Ponco passes the model to the solver and asks it to solve.
- Ponco retrieves the optimized solution from the solver and converts it back into the real-world context.
Why not create your own solver?
You may wonder why Ponco does not write its own MILP solver. A commercial package like Gurobi Optimization represents decades of research and development in this highly specialized field. It is a blessing that industry can capitalize on the efforts of that hyper-specialization, given the academic discipline of mathematical optimization is ever evolving.
What happens inside the solver?
The solver evaluates the astronomical combinations of decisions while enforcing every constraint. It uses specialized algorithms to perform intelligent brute force. It rules out infeasible options efficiently, progressively narrowing the search until it finds the best feasible solution. Some optimization models are so difficult that, given your time constraints, the solver may only determine how close the current solution is to the theoretical optimum.
How long do solvers take to find the optimal solution?
Depending on the formulation and the exact hardware, optimization models can take anywhere from microseconds to days. Solver time-to-optimal is a topic in its own right.