Sequential object-oriented simPlex

* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
*                                                                           *
*                  This file is part of the class library                   *
*       SoPlex --- the Sequential object-oriented simPlex.                  *
*                                                                           *
*    Copyright (C) 1996      Roland Wunderling                              *
*                  1996-2017 Konrad-Zuse-Zentrum                            *
*                            fuer Informationstechnik Berlin                *
*                                                                           *
*  SoPlex is distributed under the terms of the ZIB Academic Licence.       *
*                                                                           *
*  You should have received a copy of the ZIB Academic License              *
*  along with SoPlex; see the file COPYING. If not email to  *
*                                                                           *
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *

1.      All the documentation is available online at

        You can also generate it, if you have Doxygen installed by
        typing 'make doc'. It will then be in doc/html/index.html.
        On some systems, it might be necessary to use 'gmake' instead
        of 'make'.

2.      Compiling

        Read the documentation!

   a)   New CMake system:

        CMake is the recommended build system. It should configure your
        build automatically according to your environment and the available
        third-party libraries.
        Follow the guidelines of a typical CMake project (

        create a build directory:
        `mkdir build`

        configure the build from within that directory (cd build):
        `cmake <SoPlex-root>`

        compile according to the set options:
        `make` or `cmake --build .`

        List available options and corresponding descriptions for CMake:
        cmake <SoPlex-root> -LH

   b)   Old Makefile system:

        On systems with GNU g++   :  make COMP=gnu OPT=opt (default)
        Linux/x86 with Intel C++  :  make COMP=intel OPT=opt
        Tru64 with Compaq C++     :  make COMP=compaq OPT=opt
        Solaris with SUN Forte C++:  make COMP=sun OPT=opt
        IRIX with SGI Mips Pro C++:  make COMP=sgi OPT=opt
        HP-UX with HP aCC         :  make COMP=hp OPT=opt
        AIX with VisualAge C++    :  make COMP=ibm OPT=opt

        Then type make COMP=<as before> OPT=<as before> test.
        This should report no fails.  (Requires a basic Python installation.)

        If ZLIB is not available, building may fail.  In this case try

        make COMP=<as before> OPT=<as before> ZLIB=false

        which will deactivate the possibility to read gzipped LP and MPS files.

3.      Working with the 1.x interface / Compiling without the C++11 standard

        We use the feature of explicit conversion operators introduced by the
        C++11 standard.  If your compiler does not support this, or if for other
        reasons you wish to use the old SoPlex 1.x interface, you can build with

        make COMP=<as before> OPT=<as before> LEGACY=true

        or define "SOPLEX_LEGACY" for the compiler preprocessor.  Note that this will
        deactivate iterative refinement, see point 4.

4.      Compiling SoPlex with GMP

        For using SoPlex as an exact rational LP solver, SoPlex must be compiled
        with support for the GNU Multiple Precision library (
        for this.  If GMP is not available, you can deactivate it by building with

        make COMP=<as before> OPT=<as before> GMP=false.

        If you use a different build system than the provided Makefile and
        want to build with GMP support, you need to define "SOPLEX_WITH_GMP"
        for the preprocessor and link with the GMP callable library.

        On some MAC systems, GMP is installed under /sw/include and /sw/lib.
        If these are not contained in your library and include paths, you have
        to add them explicitly.

        Note for building SCIP with SoPlex:  If SoPlex was built with GMP=true,
        then SCIP also needs to be built with the same option GMP=true (default).

5.1     Using SoPlex standalone

        Start one of the binaries in the bin directory with the -h flag.

5.2     Using the library

        Examples on how to use the SoPlex library are provided in the files
        'src/soplexmain.cpp' and 'src/example.cpp'.

6.      Bug reports

        If you find any bugs, or LP-files where SoPlex fails to find the
        optimal solution, please report to {gleixner,miltenberger,koch}

7.      Publications

        Any publication for which SoPlex has been used must include an
        acknowledgement and a reference to the latest SCIP Optimization Suite report:

        Maher et al.
        "The SCIP Optimization Suite 4.0",

        If you use SoPlex as an exact rational LP solver, please cite
        the references

        Ambros M. Gleixner, Daniel E. Steffy, Kati Wolter,
        "Improving the Accuracy of Linear Programming Solvers with Iterative
        Proc. of ISSAC '12, pages 187--194, 2012, available as ZIB-Report 12-19

        Ambros M. Gleixner, Daniel E. Steffy, Kati Wolter.
        "Iterative Refinement for Linear Programming",
        ZIB-Report 15-15, Zuse Institute Berlin, 2015, available under