Scippy

SoPlex

Sequential object-oriented simPlex

spxsolver.h File Reference

main LP solver class More...

#include <assert.h>
#include <iostream>
#include <iomanip>
#include <sstream>
#include "soplex/spxdefines.h"
#include "soplex/timer.h"
#include "soplex/timerfactory.h"
#include "soplex/spxlp.h"
#include "soplex/spxbasis.h"
#include "soplex/array.h"
#include "soplex/random.h"
#include "soplex/unitvector.h"
#include "soplex/updatevector.h"
#include "soplex/stablesum.h"
#include "soplex/spxlpbase.h"
#include "spxsolver.hpp"
#include "spxsolve.hpp"
#include "changesoplex.hpp"
#include "leave.hpp"
#include "enter.hpp"
#include "spxshift.hpp"
#include "spxbounds.hpp"
#include "spxchangebasis.hpp"
#include "spxvecs.hpp"
#include "spxwritestate.hpp"
#include "spxfileio.hpp"
#include "spxquality.hpp"

Go to the source code of this file.

Classes

class  SPxPricer< R >
 Abstract pricer base class.Class SPxPricer is a pure virtual class defining the interface for pricer classes to be used by SoPlex. The pricer's task is to select a vector to enter or leave the simplex basis, depending on the chosen simplex type. More...
 
class  SPxRatioTester< R >
 Abstract ratio test base class.Class SPxRatioTester is the virtual base class for computing the ratio test within the Simplex algorithm driven by SoPlex. After a SoPlex solver has been load()ed to an SPxRatioTester, the solver calls selectLeave() for computing the ratio test for the entering simplex and selectEnter() for computing the ratio test in leaving simplex. More...
 
class  SPxStarter< R >
 SoPlex start basis generation base class.SPxStarter is the virtual base class for classes generating a starter basis for the Simplex solver SoPlex. When a SPxStarter object has been loaded to a SoPlex solver, the latter will call method generate() in order to have a start basis generated. Implementations of method generate() must terminate by loading the generated basis to SoPlex. Loaded bases must be nonsingular. More...
 
class  SPxFastRT< R >
 Fast shifting ratio test.Class SPxFastRT is an implementation class of SPxRatioTester providing fast and stable ratio test. Stability is achieved by allowing some infeasibility to ensure numerical stability such as the Harris procedure. Performance is achieved by skipping the second phase if the first phase already shows a stable enough pivot. More...
 
class  SPxBoundFlippingRT< R >
 Bound flipping ratio test ("long step dual") for SoPlex.Class SPxBoundFlippingRT provides an implementation of the bound flipping ratio test as a derived class of SPxRatioTester. Dual step length is increased beyond some breakpoints and corresponding primal nonbasic variables are set to their other bound to handle the resulting dual infeasibility. More...
 
class  SPxSolverBase< R >
 Sequential object-oriented SimPlex.SPxSolverBase is an LP solver class using the revised Simplex algorithm. It provides two basis representations, namely a column basis and a row basis (see Representation). For both representations, a primal and dual algorithm is available (see Type). More...
 

Namespaces

 soplex
 Everything should be within this namespace.
 

Macros

#define SOPLEX_HYPERPRICINGTHRESHOLD   5000
 
#define SOPLEX_HYPERPRICINGSIZE   100
 
#define SOPLEX_SPARSITYFACTOR   0.6
 
#define SOPLEX_DENSEROUNDS   5
 
#define SOPLEX_SPARSITY_TRADEOFF   0.8
 
#define SOPLEX_MAXNCLCKSKIPS   32
 
#define SOPLEX_SAFETYFACTOR   1e-2
 
#define SOPLEX_NINITCALLS   200
 

Typedefs

typedef SPxSolverBase< Real > SPxSolver
 

Functions

template<class R >
std::ostream & operator<< (std::ostream &os, const typename SPxSolverBase< R >::VarStatus &status)
 Pretty-printing of variable status. More...
 
template<class R >
std::ostream & operator<< (std::ostream &os, const typename SPxSolverBase< R >::Status &status)
 Pretty-printing of solver status. More...
 
template<class R >
std::ostream & operator<< (std::ostream &os, const typename SPxSolverBase< R >::Type &status)
 Pretty-printing of algorithm. More...
 
template<class R >
std::ostream & operator<< (std::ostream &os, const typename SPxSolverBase< R >::Representation &status)
 Pretty-printing of representation. More...
 

Detailed Description

main LP solver class

Definition in file spxsolver.h.

Macro Definition Documentation

◆ SOPLEX_DENSEROUNDS

#define SOPLEX_DENSEROUNDS   5

number of refactorizations until sparsity is tested again

Definition at line 52 of file spxsolver.h.

◆ SOPLEX_HYPERPRICINGSIZE

#define SOPLEX_HYPERPRICINGSIZE   100

size of initial candidate list for hyper pricing

Definition at line 50 of file spxsolver.h.

◆ SOPLEX_HYPERPRICINGTHRESHOLD

#define SOPLEX_HYPERPRICINGTHRESHOLD   5000

do (auto) hyper pricing only if problem size (cols+rows) is larger than SOPLEX_HYPERPRICINGTHRESHOLD

Definition at line 49 of file spxsolver.h.

◆ SOPLEX_MAXNCLCKSKIPS

#define SOPLEX_MAXNCLCKSKIPS   32

maximum number of clock skips (iterations without time measuring)

Definition at line 58 of file spxsolver.h.

◆ SOPLEX_NINITCALLS

#define SOPLEX_NINITCALLS   200

the number of clock updates in isTimelimitReached() before clock skipping starts

Definition at line 60 of file spxsolver.h.

◆ SOPLEX_SAFETYFACTOR

#define SOPLEX_SAFETYFACTOR   1e-2

the probability to skip the clock when the time limit has been reached

Definition at line 59 of file spxsolver.h.

◆ SOPLEX_SPARSITY_TRADEOFF

#define SOPLEX_SPARSITY_TRADEOFF   0.8

threshold to decide whether Ids or coIds are preferred to enter the basis; coIds are more likely to enter if SOPLEX_SPARSITY_TRADEOFF is close to 0

Definition at line 53 of file spxsolver.h.

◆ SOPLEX_SPARSITYFACTOR

#define SOPLEX_SPARSITYFACTOR   0.6

percentage of infeasibilities that is considered sparse

Definition at line 51 of file spxsolver.h.