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. Since version 7.0, SoPlex can also use incremental precision boosting to compute exact rational solutions. By default, SoPlex uses a combination of an out iterative refinement loop, with precision boosting as a fallback incase of numerical problems.

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. Linear programming using limited-precision oracles. Mathematical Pogramming. 183, pp. 525-554, 2020, available as ZIB-Report 19-57.
  • Ambros M. Gleixner, Daniel E. Steffy, Kati Wolter. Iterative Refinement for Linear Programming. INFORMS Journal on Computing 28 (3). pp. 449-464, available as ZIB-Report 15-15.

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