SCIP implements the NLP solver interface for the solvers 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: 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 FilterSQP, IPOPT, and WORHP can be enabled by specifying 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 IPOPT and WORHP can be enabled by specifying IPOPT=on
and WORHP=on
, respectively, as argument to the cmake
call.
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 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 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.