Sequential object-oriented simPlex

How to use SoPlex as an exact LP solver

Since version 1.7, SoPlex implements an iterative refinement procedure on the level of linear programs, which allows for computing extended-precision solutions beyond the limits of standard floating-point arithmetic. It may be particularly helpful for numerically troublesome LPs and applications that require solutions within tight feasibility tolerances. Since version 2.1 this has been extended to compute exact rational solutions.

By default, SoPlex functions as a standard floating-point LP solver. In order to use SoPlex as an exact LP solver, you need to compile SoPlex with GMP support (default, see the INSTALL file) and change the following parameters from their default value:

  • real:feastol = 0
  • real:opttol = 0
  • int:solvemode = 2
  • int:syncmode = 1
  • int:readmode = 1 (optional, activates exact parsing of input files)
  • int:checkmode = 2 (optional, activates exact final check of feasibility and optimality at the command line)

See this page how to change parameters and the list of all SoPlex parameters for their detailed description. A settings file exact.set for exact solving is provided in the directory settings of the distribution. On the command line, this can be read with option --loadset=settings/exact.set.

If you have questions on particularly this feature you can contact Ambros Gleixner or post them on the SoPlex mailing list.


The mathematical background of the underlying methods is described in the papers

  • 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.
  • Ambros M. Gleixner, Daniel E. Steffy, Kati Wolter. Iterative Refinement for Linear Programming. ZIB-Report 15-15, Zuse Institute Berlin, 2015.

When using SoPlex as an exact LP solver, please cite the above papers.