Cristina Radu
@Sage Optimization
WHAT IS A SOLVER?
A solver is a tool, algorithm, or program designed to find solutions to a specific type of problem, typically mathematical, logical, computational, or engineering in nature. The purpose of a solver is to process input data, apply a set of rules or operations, and produce an output that satisfies the problem's constraints or objectives.
Optimization solvers (or mathematical solvers)
• Find the best solution for a given problem, often maximizing or minimizing a function subject to constraints.
• Examples: Linear programming solvers like Gurobi, CPLEX, or open-source options like HIGHS and SCIP.
Logical or constraint solvers:
• Solve problems defined by a set of logical rules or constraints.
• Examples: SAT solvers (for Boolean satisfiability problems) or constraint programming tools like Google OR-Tools.
SOLVER PHASES
In OR, by solver we mean either an optimization model with model & build + solve phases or a mathematical solver.
An optimization model:
MATH EQUATIONS + MODEL BUILDER + MATHEMATICAL SOLVER = PROBLEM SPECIFIC SOLVER
In the build phase we write the equations in an editor and build the model (usually an mps or lp file). The model is sent to a mathematical solver for solving.
The model builder
🔹 enumerates all the constraints for each element of the cartesian product of the dimensions applied to the constraint
🔹 builds a matrix (variables x constraints) which is sent to the mathematical solver.
The mathematical solver does not know anything about the modelling techniques or the context (e.g. supply chain, energy, finance etc).
For linear programming (LP) the most popular algorithms used by the mathematical solvers are simplex and the interior point method. For mixed integer programming (MIP) we have branch-and-bound and cutting planes. In constraints programming (CP) we have backtracking, constraint propagation & branching heuristics.
Mathematical solvers are open-source (HiGHS, SCIP, GLOP, CP-SAT, CBC etc.) or commercial (Gurobi Optimization, CPLEX, Xpress, MOSEK ApS, COPT, Knitro, Hexaly etc). We differentiate between linear and non linear mathematical solvers. In particular, CP - SAT is a constraints programming solver.
I have split the build phase in equations editor and model builder but they usually overlap in optimization software packages. For example if you model in Python, there is no model builder by default but you could use Pyomo or PuLP. They are Python-based, open-source optimization modeling languages with a diverse set of optimization capabilities. Gurobipy is a Python framework to define models that can easily interface with Gurobi.
AMPL Optimization Inc., GAMS are algebraic modeling languages used to describe and solve high-complexity problems. They have a software package around them which includes various mathematical solvers.
OR-Tools is an open source software suite for optimization. After modeling your problem in the programming language of your choice, you can use commercial or open-source solvers to solve it.
Nextmv is a DecisionOps platform that provides infrastructure, testing, and collaboration tools for optimization technology. It has integrations with AMPL, OR-Tools, HiGHS, Pyomo, and Gurobi.
In supply chain planning software, the solution vendors build their in-house optimization framework (equation editor + model builder) using Java, C#, Python, C++ etc. and integrate it with commercial solvers.
In short: OR Tools, Pyomo, PuLP, GurobiPy, AMPL, GAMS focus on the equations formulation and model building. They call mathematical solvers which execute the solve phase.

Have a look at episode 2 from the hand-on optimization masterclass where we discuss this topic.
More Articles For You
Operational planning and campaign optimization
Cristina Radu
(Supply Chain Optimization)

Strategic planning and network design
Cristina Radu
(Supply Chain Optimization)

A Brief History of Linear and Mixed-Integer Programming Computation
Robert E. Bixby
(Technical knowledge)

Sudoku
Julian Hall
(Technical knowledge)
