All news

Release · 2.0

SHOT 2.0 released

SHOT 2.0 is faster, more robust on nonconvex problems, and open to extension from Python through SHOTpy and callbacks. Install it with pip install SHOTpy.

SHOT 2.0 is here, the biggest update of the solver since its first release. It solves problems more efficiently, is considerably more robust on nonconvex problems and much faster on large instances, and it opens up the solver so that you can extend it from Python and C++.

Get it from PyPI, with the open-source subsolvers Cbc, Ipopt and HiGHS included:

pip install SHOTpy

Ready-to-run executables for Linux, macOS and Windows are available from GitHub releases, and the source code is on GitHub.

Faster and more robust

SHOT 2.0 solves problems more efficiently than SHOT 1.1. Nonconvex problems in particular are handled far more reliably: SHOT finds feasible solutions in more cases, keeps going where it used to stop early, and gives bounds you can trust. Large instances are read, reformulated and solved much faster, and many improvements under the hood make the solver more stable on numerically difficult problems.

A solver you can extend

A big part of SHOT 2.0 is opening up the solver. With SHOTpy, the new Python interface, you can build problems directly in Python, read them from files, and inspect everything SHOT finds. Through callbacks, in Python as well as C++, you can take part in the solution process: add your own cuts to the outer approximation, propose solutions from your own heuristics, supply bounds, or warm start the solver. This makes SHOT a flexible platform for experimenting with new ideas in MINLP, and easy to embed in larger workflows and applications.

The SHOTpy tutorial, a series of four notebooks, is the best place to start.

Also new

  • HiGHS as MIP subsolver, for a fully open-source setup that still solves convex problems to global optimality.
  • Better use of quadratic terms, which are passed directly to the MIP solver whenever it can handle them.
  • New reformulations of convex quadratic expressions, described in a recent preprint.
  • Uno and CONOPT as NLP solvers, alongside Ipopt and GAMS.
  • Native Windows support, with wheels, executables and builds from source.
  • New documentation on this website: user guides, a settings reference and API references for Python and C++.

All changes are listed in the changelog.

Thank you to everyone who tried the release candidate and reported problems. If you run into anything, please let us know on GitHub.