Scippy

SoPlex

Sequential object-oriented simPlex

About

SoPlex is an optimization package for solving linear programming problems (LPs) based on an advanced implementation of the primal and dual revised simplex algorithm. It provides special support for the exact solution of LPs with rational input data. It can be used as a standalone solver reading MPS or LP format files via a command line interface as well as embedded into other programs via a C++ class library. The main features of SoPlex are:

  • presolving, scaling, exploitation of sparsity, hot-starting from any regular basis,
  • column- and row-oriented form of the simplex algorithm,
  • an object-oriented software design written in C++,
  • a compile-time option to use 80bit extended ("quad") precision for numerically difficult LPs,
  • an LP iterative refinement procedure to compute high-precision solution, and
  • routines for an exact rational LU factorization and continued fraction approximations in order to compute exact solutions.

SoPlex has been used in numerous research and industry projects and is the standard LP solver linked to the mixed-integer nonlinear programming and constraint integer programming solver SCIP. SoPlex is free for academic research and available in source code. It can be licensed for commercial use.

News

09/Mar/2017 Version 3.0.0 released. Release Notes
29/Feb/2016 Version 2.2.1 released. Release Notes
01/Jul/2015 Version 2.2.0 released. Release Notes
23/Mar/2015 Binaries for Windows available for download.
18/Dec/2014 Version 2.0.1 released. Release Notes
07/Mar/2014 Binaries for Linux and Windows available for download.
27/Feb/2014 Version 2.0.0 released. Release Notes

older news...

25/Feb/2014 Website relaunched.
16/Oct/2013 Version 1.7.2 released. Release Notes
04/Jan/2013 Version 1.7.1 released. Release Notes
31/Jul/2012 Version 1.7.0 released. Release Notes
28/Oct/2011 Version 1.6.0 released. Release Notes
30/Sep/2010 Version 1.5.0 released. Release Notes
06/Aug/2010 Patch 1.4.2c available for download providing an additional interface method to set a starting basis in the SoPlex class.
19/Jan/2010 Patch 1.4.2b available for download. Please update if you encounter problems in combination with older compiler versions.
12/Jun/2009 Patch 1.4.2a available for download. Please update.
11/Sep/2009 Version 1.4.2 released. Release Notes
20/Feb/2009 Version 1.4.1 released. Release Notes
30/Sep/2008 Version 1.4.0 released. Release Notes
27/Aug/2007 Version 1.3.2 released. Release Notes
21/Aug/2007 Website relaunched.
17/Nov/2006 Version 1.3.1 released. Release Notes
03/Feb/2006 Version 1.3.0 released. Release Notes
10/Apr/2002 Version 1.2.1 released. Release Notes
14/Jan/2002 Version 1.2.0 released. Release Notes

License

SoPlex is distributed under the ZIB Academic License. You are allowed to retrieve SoPlex for research purposes as a member of a non-commercial and academic institution.
If you want to use SoPlex commercially or if you are interested in maintenance and support, please contact us by sending an email to Thorsten Koch.

Any publication for which SoPlex is used must include an acknowledgment and a reference to the Ph.D. thesis:

Roland Wunderling,
Paralleler und Objektorientierter Simplex-Algorithmus,
ZIB technical report TR 96-09, Berlin 1996.

Here is the corresponding bibtex entry.

Download

The files you can download here come without warranty. Use at your own risk!

older versions...
  • SoPlex version 1.6.0
  • Source code:

  • SoPlex version 1.5.0
  • Source code:

  • SoPlex version 1.4.2
  • Source code:

    Additional files:
    • datakey.h: For some older versions of the GCC compiler, the implementation of the SoPlex index management can trigger a bug in glibc. We recommend to either update your compiler or use the following alternative SoPlex implementation: Copy file datakey.h to src directory.
    • soplex.cpp: Fix for a small bug appearing when the LP is solved to optimality by the SoPlex simplifier. Copy file soplex.cpp to src directory.
    • soplex.h: Additional interface method to set a starting basis within the SoPlex class. Copy file soplex.h to src directory.

  • SoPlex version 1.4.1
  • Source code:

  • SoPlex version 1.4.0
  • Source code:

  • SoPlex version 1.3.2
  • Source code:

    Additional files:
    • example.cpp: The current version still outputs the old version number in the example program. This patched version outputs the correct number. Copy file to src in the SoPlex directory.
    • make.darwin.x86.gnu.dbg: Makefiles needed for Mac (Darwin) with Intel processors (contributed by Volker Kaibel). Copy files to make in the SoPlex directory.
    • make.darwin.x86.gnu.opt: Makefiles needed for Mac (Darwin) with Intel processors (contributed by Volker Kaibel). Copy files to make in the SoPlex directory.

  • SoPlex version 1.3.1
  • Source code:

Platforms

SoPlex is implemented in C++. The code should be compliant with the current ANSI standard. With a modern C++ compiler you should be able to compile the code on any platform.

More details can be found in the Doxygen documentation.

SoPlex is also available on the NEOS Server, where you can post your model in LP or MPS format to solve it.

Contact

For questions about SoPlex or to report a bug, please write to soplex@zib.de.

Developers

Main developers

Ambros Gleixner
Matthias Miltenberger
Benjamin Müller

Further and former developers

Benjamin Hiller
Thorsten Koch 
Sebastian Orlowski now at atesio
Roland Wunderling former main developer - now at IBM

Contributors

Tobias Achterberg now at Gurobi
Timo Berthold
Andreas Bley now at University Kassel
Dennis Elbrächter
Wei Huang now at Siemens AG, Corporate Technology
Eva Ramlow
Dan Steffy
Marc Pfetsch now at TU Darmstadt
Andreas Tuchscherer

Cooperation

SoPlex is developed in cooperation with