Skip to article frontmatterSkip to article content
Site not loading correctly?

This may be due to an incorrect BASE_URL configuration. See the MyST Documentation for reference.

Dependencies

iLab Assistant

Third-party optimization solvers

SHOP builds optimization models that has to be solved to optimality by an optimization solver. SHOP currently supports the commercial solvers CPLEX and Gurobi, but also the open source solvers CLP/CBC in the Open Solver Interface (OSI) from COIN-OR and HiGHS (from SHOP 18.4.0).

SHOP uses separate solver interface binaries (shop_cplex_interface.dll etc.) to interface with the different solvers. The commercial CPLEX and Gurobi solvers require a separate .dll/.so file that is dynamically linked at runtime by SHOP’s CPLEX and Gurobi interface binaries. Gurobi also requires a valid license file at runtime. The open source CLP/CBC and HiGHS solvers are statically linked into their respective SHOP interface binaries, and so they have no other runtime dependencies.

SINTEF is currently an official reseller of CPLEX for unlimited use within our hydropower scheduling models. Please contact SINTEF if you are interested in purchasing CPLEX. If you purchase CPLEX or Gurobi yourself or through other vendors, you are responsible for not violating the license agreement with CPLEX/Gurobi when running SHOP. Currently only the CPLEX interface is packaged with the SHOP releases on Debian, AlmaLinux, and Windows, please contact SINTEF if you are interested in testing out the other solvers. The Fedora distribution of SHOP include all solvers as optional packages. Note that using other solvers than CPLEX requires the licenses in the “Additional Solvers” license group.

SHOP 18 (latest) binaries

The SHOP binaries are available in different builds to support various operating systems and environments. Below are the details of the compiler versions used for the Windows, Linux (Debian, AlmaLinux and Fedora) builds for the latest major SHOP version. See also further down for the dependencies for the previous major version.

The latest SHOP version uses the C++23 standard.

In addition to the main external solver libraries mentioned above with their appropriate licenses, SHOP also utilizes several third-party (open source) libraries. Their license notices can be found in the compressed docs folder alongside the SHOP binaries.

The shop_server_host binary used to set up SHOP as a REST service requires the system to have curl installed.

The Python binding (shop_pybind) is built with nanobind version v3.1.0 and compiled against the CPython stable ABI, meaning that a single binding binary serves all supported Python versions. Earlier SHOP 18 releases (up to and including 18.4.x) were built with pybind11 and shipped one binding binary per Python version, as did the SHOP 17 builds listed further down. See Python bindings backend for how the accompanying nanobind backend is provided on Linux and Windows.

Linux builds

The Debian, AlmaLinux and Fedora builds have the following dependencies:

OSPython versionsnanobindglibc / glibcxx
Debian 13 (trixie)3.11–3.15v3.1.0glibc v2.41 / glibcxx v3.4.33
AlmaLinux 9.8 (Olive Jaguar)3.11–3.15v3.1.0glibc v2.34 / glibcxx v3.4.34
Fedora 43not supported–system libs
Fedora 44not supported–system libs

AlmaLinux is built with the GCC Toolset 15.

The stable-ABI binding means that the Debian and AlmaLinux builds are no longer listed per Python version, and should work for all Python versions >= 3.10. The Fedora releases are distributed as RPM packages of the SHOP core, solver interfaces and development files, and currently contain neither shop_pybind nor the SHOP Server, so pyshop and the REST service are not available for those builds. On Debian and AlmaLinux the Pyhton binding needs the nanobind-backend package at import time, see Python bindings backend.

The minor OS versions will be updated some time after the official release dates.

Windows build

Windows is built with the following dependencies:

OSPython version (latest)nanobindC compiler / CXX compiler
Windows3.15v3.1.0MSVC 19.51.36248 / MSVC 19.51.36248
Windows3.14v3.1.0MSVC 19.51.36248 / MSVC 19.51.36248
Windows3.13v3.1.0MSVC 19.51.36248 / MSVC 19.51.36248
Windows3.12v3.1.0MSVC 19.51.36248 / MSVC 19.51.36248
Windows3.11v3.1.0MSVC 19.51.36248 / MSVC 19.51.36248

The frontend is built against the stable ABI, so a single binding binary serves all the Windows Python versions above. The per-version nanobind backend binaries (shop_nanobind_backend.cp3xx-*.pyd) are shipped for each of them, see Python bindings backend.

Python version support

Our policy is to build for all Python versions supported by Python Software Foundation for our releases that include the Python bindings. We strive to support the latest Python version shortly after release, but it might take a few weeks until all our dependencies are updated so that we can add it to our builds.

Supported python version

SHOP 17 (previous) binaries

Debian Base build

OSPython versionpybind11glibc / glibcxx
Debian 11 (bullseye)3.14.0v2.13.6glibc v2.39 / glibcxx v3.4.33
Debian 11 (bullseye)3.13.9v2.13.6glibc v2.39 / glibcxx v3.4.33
Debian 11 (bullseye)3.12.12v2.13.6glibc v2.39 / glibcxx v3.4.33
Debian 11 (bullseye)3.11.14v2.13.6glibc v2.39 / glibcxx v3.4.33
Debian 11 (bullseye)3.10.19v2.13.6glibc v2.39 / glibcxx v3.4.33

AlmaLinux build

OSPython versionpybind11glibc / glibcxx
AlmaLinux 8.9 (Midnight Oncilla)3.11.11v2.13.6glibc v2.28 / glibcxx v3.4.25

Windows build

OSPython versionpybind11C compiler / CXX compiler
Windows3.14.10v3.0.1MSVC 19.37.32822.0 / MSVC 19.37.32822.0
Windows3.13.0v2.13.6MSVC 19.37.32822.0 / MSVC 19.37.32822.0
Windows3.12.1v2.11.1MSVC 19.37.32822.0 / MSVC 19.37.32822.0
Windows3.11.5v2.11.1MSVC 19.37.32822.0 / MSVC 19.37.32822.0
Windows3.10.11v2.11.1MSVC 19.37.32822.0 / MSVC 19.37.32822.0