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
Current wheels are for Python 3.11 and later on Linux (x86-64 and ARM64), macOS (Apple silicon, macOS 14 and later), and Windows x64, and include the open-source subsolvers Cbc, Ipopt and HiGHS. The package also installs the SHOT command. Standalone executable archives are available from GitHub releases. SHOT can also be compiled from source, including natively on Windows with MSVC; WSL remains an alternative.
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.