New SHOT 2.0 released

Open-source MINLP solver

(Convex) MINLP, solved to optimality

SHOT combines polyhedral outer approximation with primal heuristics. Use it from GAMSPy, Pyomo, JuMP, AMPL, C++ or Python.

pip install SHOTpy

A convex paraboloid drawn as a wireframe, with a supporting hyperplane touching it at one point, above a lattice of integer points.

01 — Overview

What is SHOT?

SHOT, the Supporting Hyperplane Optimization Toolkit, is an open-source solver for mixed-integer nonlinear programming (MINLP), written in C++. It is global for convex MINLP, and mainly a heuristic for nonconvex MINLP, where the bounds on the objective value are still guaranteed.

A reformulation engine rewrites each problem into a form that suits the method, and some nonconvex problem types are reformulated into convex ones and solved to global optimality.

Problems

MINLP and its subclasses: NLP, MIQP and MIQCQP

Method

Polyhedral outer approximation (ESH and ECP) combined with primal heuristics

Subsolvers

MIP: CPLEX, Gurobi, Cbc or HiGHS. NLP: Ipopt, Uno, or any NLP solver in GAMS

Interfaces

GAMSPy, GAMS, Python (SHOTpy), C++, the command line, and AMPL, Pyomo and JuMP through ASL

Problem formats

OSiL, AMPL .nl and GAMS .gms

Community

A COIN-OR project, winner of the COIN-OR Cup 2018, licensed under EPL-2.0

02 — Method

Dual and primal strategies

The outer approximation gives a lower bound on the objective, feasible solutions an upper bound. SHOT terminates when the gap between them is within tolerance.

An illustration of one ESH iteration. With JavaScript enabled, you can step through the method here.
  • Interior point
  • MILP solution
  • Boundary point
  • Primal solution
  • New hyperplane
  • Earlier hyperplanes
  • Integer values of x₁
  • Objective contours

Try it

minimize −0.94x₁ + 0.34x₂
subject to g₁(x) ≤ 0, g₂(x) ≤ 0
where 0 ≤ x ≤ 10, x₁ integer

Iteration
0
Dual bound
−∞
Primal bound
∞
Gap
–

Computed in your browser with the same steps as SHOT's dual and primal strategies, on a problem small enough to draw. Termination at an objective gap of 0.01 %.

Dual strategy

Polyhedral outer approximation

  • Supporting hyperplanes (ESH) or cutting planes (ECP) build an outer approximation of the nonlinear feasible set.
  • The MIP subsolver (CPLEX, Gurobi, Cbc or HiGHS) gives the dual bound, the minimum within the approximation.
  • Multi-tree with every MIP subsolver. With CPLEX and Gurobi, also single-tree (branch and cut), and quadratic terms can be passed directly to MIQP and MIQCQP subproblems.

Primal strategy

Deterministic heuristics

  • Checking the solutions in the MIP solver's solution pool against the nonlinear constraints.
  • Solving NLP problems with the integer variables fixed, with Ipopt, Uno, GAMS or SHOT itself.
  • Root searches between infeasible and feasible points.

03 — Capability

What is solved to global optimality?

It depends on the MIP subsolver. Nonconvex problems are always solved with valid bounds, but the gap may not close. If all nonconvexities can be reformulated into convex form, for example bilinear terms with a discrete variable, the solution is global.

More in Lundell and Kronqvist (2022).

Problem type CPLEXGurobiCbcHiGHSnew
Convex MIQP
Convex MIQCQP
Convex MINLP
Nonconvex MIQP ? ?
Nonconvex MIQCQP ? ? ?
Nonconvex MINLP ? ? ? ?
  • Solved to global optimality
  • Handled directly by the subsolver
  • ? No guarantee that a solution is found

New version

What's new in SHOT 2.0

A Python interface, HiGHS as MIP subsolver, and callbacks that let you take part in the solution process.

  • SHOTpy, a native Python interfaceBuild problems in Python or read .nl, .gms and OSiL files
  • HiGHS as MIP subsolverA fully open-source toolchain with Cbc, HiGHS and Ipopt
  • Extended callbacksInject solutions, cuts, dual bounds and interior points
  • Decomposition of convex quadraticsEigenvalue and LDLᵀ lifting reformulations
  • Better nonconvex handlingConvex bounding and repair of infeasible subproblems
Read the announcement pip install SHOTpy

05 — Cite

Using SHOT in research?

Please cite the SHOT paper. If you use SHOT on nonconvex problems, please also cite the paper on its nonconvex features.

All publications and BibTeX

The SHOT paper

A. Lundell, J. Kronqvist, T. Westerlund. The supporting hyperplane optimization toolkit for convex MINLP. Journal of Global Optimization, 84(1), 1–41, 2022. doi:10.1007/s10898-022-01128-0

Nonconvex MINLP

A. Lundell, J. Kronqvist. Polyhedral approximation strategies for nonconvex mixed-integer nonlinear programming in SHOT. Journal of Global Optimization, 82(4), 863–896, 2022. doi:10.1007/s10898-021-01006-1