algorithm for continuous linear problems

Controls which algorithm is used to solve continuous linear models or to solve the root relaxation of a MIP.

Purpose

Solution algorithm for continuous problems

API Parameter Name Name prior to V12.6.0
C CPXPARAM_LPMethod CPX_PARAM_LPMETHOD
C++ IloCplex::Param::RootAlgorithm RootAlg (int)
Java IloCplex.Param.RootAlgorithm RootAlg (int)
.NET Cplex.Param.RootAlgorithm RootAlg (int)
OPL rootalg rootalg
Python parameters.lpmethod lpmethod
Interactive lpmethod lpmethod
Identifier 1062 1062

Description

Controls which algorithm CPLEX uses to solve continuous linear models (LPs).

In the object-oriented APIs (such as C++, Java, or .NET APIs), this parameter, as RootAlg, also controls which algorithm CPLEX uses to solve the root relaxation of a MIP.

In the C API and the Interactive Optimizer, there are separate parameters to control LP, QP, and MIP optimizers, depending on the problem type. See, for example, algorithm for continuous quadratic optimization or algorithm for initial MIP relaxation.

In all cases, the default setting is 0 (zero). The default setting means that CPLEX will select the algorithm in a way that should give best overall performance.

For specific problem classes, the following details document the automatic settings. Note that future versions of CPLEX could adopt different strategies. Therefore, if you select any nondefault settings, you should review them periodically.

Currently, the behavior of the automatic setting is that CPLEX almost always invokes the dual simplex algorithm when it is solving an LP model from scratch. When it is continuing from an advanced basis, it will check whether the basis is primal or dual feasible, and choose the primal or dual simplex algorithm accordingly.

If multiple threads have been requested, in either deterministic or opportunistic mode, the concurrent optimization algorithm is selected by the automatic setting when CPLEX is solving a continuous linear programming model (LP) from scratch.

When three or more threads are available, and you select concurrent optimization for the value of this parameter, its behavior depends on whether parallel mode is opportunistic or deterministic (default parallel mode). Concurrent optimization in opportunistic parallel mode runs the dual simplex optimizer on one thread, the primal simplex optimizer on a second thread, the parallel barrier optimizer on a third thread and on any additional available threads. In contrast, concurrent optimization in deterministic parallel mode runs the dual optimizer on one thread and the parallel barrier optimizer on any additional available threads.

The automatic setting may be expanded in the future so that CPLEX chooses the algorithm based on additional problem characteristics.

Tip: In the presence of a linear programming (LP) callback, CPLEX does not invoke concurrent optimization, regardless of the value of this parameter.

Table 1. Values
Value Symbol Meaning
0 CPX_ALG_AUTOMATIC Automatic: let CPLEX choose; default
1 CPX_ALG_PRIMAL Primal simplex
2 CPX_ALG_DUAL Dual simplex
3 CPX_ALG_NET Network simplex
4 CPX_ALG_BARRIER Barrier
5 CPX_ALG_SIFTING Sifting
6 CPX_ALG_CONCURRENT Concurrent (Dual, Barrier, and Primal in opportunistic parallel mode; Dual and Barrier in deterministic parallel mode)