Release · 2.0
SHOT 2.0 released
SHOT 2.0 adds a Python interface, HiGHS as MIP subsolver and extended callbacks. Install it with pip install SHOTpy.
SHOT 2.0 is available on PyPI as SHOTpy, and as source code on GitHub:
pip install SHOTpy
The wheels are for Python 3.11 and later on Linux (x86-64) and macOS (Apple silicon, macOS 14 and later), and include the open-source subsolvers Cbc, Ipopt and HiGHS. On other Linux and macOS systems, SHOT can be compiled from source. Windows is no longer supported directly; use the Windows Subsystem for Linux.
Please report any problems on GitHub.
New in SHOT 2.0
- SHOTpy, a Python interface. Control SHOT directly from Python without Pyomo or GAMSPy: read problems from
.nl,.gmsand OSiL files, or build them with the API. See the SHOTpy tutorial. - HiGHS as MIP subsolver. HiGHS is supported in the dual strategy with the multi-tree strategy. Convex MIQP, MIQCQP and MINLP problems are solved to global optimality with HiGHS, as with the other MIP subsolvers.
- Extended callbacks. In C++ and Python, callbacks can now reject primal candidates, inject primal solutions, add hyperplanes to the outer approximation, supply dual bounds and provide interior points for the ESH root search. They make warm starts, custom primal heuristics and lazy nonlinear constraints possible. See the callback documentation.
- Decomposition of nonseparable convex quadratic expressions. A lifting reformulation based on eigenvalue and LDLᵀ decompositions; see the preprint.
- Better handling of nonconvex problems. A convex bounding strategy improves the dual bound, and infeasible dual subproblems are repaired more reliably.
- Parallel primal heuristics. Primal heuristics, such as the integer-fixed NLP problems, can run in parallel.
- Uno as NLP solver, alongside Ipopt and GAMS, and solver option prioritization.