Optimization Solvers

CBC

Engage uses a free and open-source solver CBC for development purpose, and it is already built into the docker image.

CBC supports the GNU MathProg modeling language - subset of the AMPL language, and include a variety of components, for detailed information, please refer to https://www.coin-or.org/.

However, it takes too much time and memory for solving large Calliope models.

SCIP

SCIP is currently one of the fastest non-commercial solvers for mixed integer programming (MIP) and mixed integer nonlinear programming (MINLP). It is also a framework for constraint integer programming and branch-cut-and-price. It allows for total control of the solution process and the access of detailed information down to the guts of the solver.

However we didn’t provide in docker environment for development purpose, if you need, here are the steps for installing SCIP solver,

$ cd ~/scipoptsuite-5.0.0/ && make
$ cd ~/scipoptsuite-5.0.0/scip/interfaces/ampl/ && ./get.ASL -y
$ cd ~/scipoptsuite-5.0.0/scip/interfaces/ampl/solvers/ && sh configurehere && make
$ cd ~/scipoptsuite-5.0.0/scip/interfaces/ampl/ && make
$ cp ~/scipoptsuite-5.0.0/scip/interfaces/ampl/bin/scipampl /usr/local/bin/

HiGHS

In the deployed Engage application at NREL, it uses high-performance solver HiGHS to solve Calliope models with fast speed and large memory in compute node. It’s open-source, for more information, please refer to its official documentation https://highs.dev/#docs

More Choice

In behind, Calliope interfaces to Pyomo - a Python-based, open-source optimization modeling language with a diverse set of optimization capabilities. With the API interface provided by Calliope, you can specify the customized solver options.

For more solver choice, please refer to specifying-custom-solver-options

Refer to influence-of-solver-choice-on-speed for more information about problem solving speed with different solvers.