# SoPlex

Sequential object-oriented simPlex

Installation
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
*                                                                           *
*                  This file is part of the class library                   *
*       SoPlex --- the Sequential object-oriented simPlex.                  *
*                                                                           *
*    Copyright (C) 1996      Roland Wunderling                              *
*                            fuer Informationstechnik Berlin                *
*                                                                           *
*                                                                           *
*  along with SoPlex; see the file COPYING. If not email to soplex@zib.de.  *
*                                                                           *
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *

1.      All the documentation is available online at

http://soplex.zib.de

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

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 (http://cmake.org/):

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 (http://www.gmplib.org/)
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

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}@zib.de.

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",
http://www.optimization-online.org/DB_HTML/2017/03/5895.html

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
Refinement",
Proc. of ISSAC '12, pages 187--194, 2012, available as ZIB-Report 12-19
under http://nbn-resolving.de/urn:nbn:de:0297-zib-15451

Ambros M. Gleixner, Daniel E. Steffy, Kati Wolter.
"Iterative Refinement for Linear Programming",
ZIB-Report 15-15, Zuse Institute Berlin, 2015, available under
http://nbn-resolving.de/urn/resolver.pl?urn:nbn:de:0297-zib-55118