MathOpt

MathOpt is a library for modeling and solving mathematical optimization problems, for example, linear programming problems (LPs) or mixed integer programming problems (MIPs). MathOpt separates modeling from solving, allowing users to switch between solution methods by changing an enum (and a build dependency) to select their solver.

Watch this video for brief introduction to MathOpt from the 2023 JuMP Conference Presentation.

MathOpt Features

MathOpt models can contain:

  • integer or continuous variables
  • linear or quadratic constraints
  • linear or quadratic objectives
  • multiple hierarchical objectives
  • specialized MIP constraints (SOS, indicator, more to come)
  • some conic constraints (second order cone, more to come)

Models are defined independently of any solver and solvers can be swapped interchangeably. MathOpt supports the following solvers:

MathOpt provides client libraries in C++ and Python to build your optimization model.

MathOpt supports many advanced features, including:

  • Infeasibility Analysis (Irreducible Infeasible Set or IIS), Gurobi only
  • Incremental Solving
  • Callbacks
  • Duality
  • Primal and Dual rays
  • Suboptimal primal and dual solutions
  • Variable and constraint deletions
  • Warm starts (by solution or basis)
  • Detailed termination reason
  • Branching priority
  • Interruption
  • Many solver independent parameters