SCIP comes with implementations of the LP solver interface lpi.h for many LP solvers:
LPI name | LP solver |
---|---|
spx | SoPlex |
cpx | IBM ILOG CPLEX |
xprs | FICO XPress |
grb | Gurobi (interface is in beta stage, version at least 7.0.2 required) |
clp | CoinOR CLP (interface currently sometimes produces wrong results) |
glop | Google Glop (experimental, LPI is contained in Glop package/Google OR tools) |
msk | Mosek (experimental) |
qsopt | QSopt (experimental) |
none | disables LP solving entirely (not recommended; only for technical reasons) |
There are two different implementations for SoPlex. The default one (spx
) uses an updated interface that is provided by SoPlex itself (since version 2.0), resulting in a slimmer LPI that is similiar to those for CPLEX or XPRESS. The other one - spx1
- is the older LPI that directly uses the internal simplex solver of SoPlex and therefore needs to duplicate some features in the LPI that are already available in SoPlex itself. It lacks some features like persistent scaling which are only available in the modern implementation. Upcoming features may not be supported. Old compilers might have difficulties with the new implementation because some C++11 features are required that may not be supported.
To use the old implementation, set the Makefile option LPS=spx1
or configure your CMake build with LEGACY=ON
.