Scippy

SCIP

Solving Constraint Integer Programs

Available implementations of the NLP solver interface

SCIP implements the NLP solver interface for the solvers CONOPT, IPOPT, WORHP, and FilterSQP. In contrast to the implementations of the LP solver interface, SCIP can be compiled with multiple NLP solvers and selects the solver with the highest priority at the beginning of the solving process. Currently, the priorities are, in descending order: CONOPT, Ipopt, WORHP/IP, FilterSQP, WORHP/SQP.

If more than one solver is available, then it is possible to solve all NLPs during the solving process with all available NLP solvers by setting the parameter nlpi/all/priority to the highest value. In this case, SCIP uses the solution from a solver that provides the best objective value. Other possible use cases for the availability of multiple solvers have not been implemented yet.

In the GNU make based build system, building the implementations of the interface for CONOPT, FilterSQP, IPOPT, and WORHP can be enabled by specifying CONOPT=true, FILTERSQP=true, IPOPT=true, and WORHP=true, respectively, as argument to the make call. In the CMAKE based build system, building the implementation of the interface for CONOPT, IPOPT and WORHP can be enabled by specifying CONOPT=on, IPOPT=on and WORHP=on, respectively, as argument to the cmake call.

CONOPT

CONOPT is a feasible path solver based on advanced active set methods. Originally developed by ARKI Consulting & Development A/S in Denmark, CONOPT was acquired by GAMS in 2024. It is free for academic uses and is available at https://www.conopt.com.

IPOPT

IPOPT implements a primal-dual interior point method and uses line searches based on filter methods. It has been developed by Andreas Wächter and Carl Laird and is available under the Eclipse Public License on COIN-OR.

WORHP

WORHP implements a sequential quadratic programming method and a penalty-interior point algorithm. It is developed at the University of Bremen and is free for academic purposes.

FilterSQP

FilterSQP implements a sequential quadratic programming method. It has been developed by Roger Fletcher and Sven Leyffer. It is not publicly available, but may be obtained from Sven Leyffer on request.