Overview of LP optimizers

Introduces parameters to select LP optimizers.

CPLEX offers several different optimizers for linear programming problems. Each of these optimizers is available whether you call CPLEX from within your own application using Concert Technology or the Callable Library, or you use the Interactive Optimizer.

The choice of LP optimizer in CPLEX can be specified using the algorithm for continuous linear problems parameter, named RootAlg in the C++, Java, and .NET APIs, CPXPARAM_LPMethod in the Callable Library, parameters.lpmethod in the Python API, and lpmethod in the Interactive Optimizer. In Concert Technology, the LP method is controlled by the RootAlg parameter (which also controls related aspects of QP and MIP solutions, as explained in the corresponding chapters of this manual). In this chapter, this parameter will be referred to uniformly as LPMethod.

The LPMethod parameter sets which optimizer will be used when you solve a model in one of the following ways:

  • cplex.solve (Concert Technology for users of C++, Java, or .NET)

  • CPXXlpopt and CPXlpopt (Callable Library)

  • cplex.solve (Python API)

  • optimize (Interactive Optimizer)

The choices for LPMethod are summarized in Table 1.
Table 1. Settings of the LPMethod parameter for choosing an optimizer

Setting of

LPMethod

Meaning See Section
0 Default Setting Automatic selection of an optimizer
1 Primal Simplex Primal simplex optimizer
2 Dual Simplex Dual simplex optimizer
3 Network Simplex Network optimizer
4 Barrier Barrier optimizer
5 Sifting Sifting optimizer
6

Concurrent Dual, Barrier, and Primal in opportunistic parallel mode; Concurrent Dual and Barrier in deterministic parallel mode

Concurrent optimizer
The symbolic names for these settings in an application are summarized in Table 2.
Table 2. Symbolic names for LP solution methods
  Python API Concert C++ Concert Java Concert.NET Callable Library
0 Cplex.parameters.lpmethod.values.auto IloCplex::AutoAlg IloCplex.Algorithm.Auto Cplex.Auto CPX_ALG_AUTOMATIC
1 Cplex.parameters.lpmethod.values.primal IloCplex::Primal IloCplex.Algorithm.Primal Cplex.Primal CPX_ALG_PRIMAL
2 Cplex.parameters.lpmethod.values.dual IloCplex::Dual IloCplex.Algorithm.Dual Cplex.Dual CPX_ALG_DUAL
3 Cplex.parameters.lpmethod.values.network IloCplex::Network IloCplex.Algorithm.Network Cplex.Network CPX_ALG_NET
4 Cplex.parameters.lpmethod.values.barrier IloCplex::Barrier IloCplex.Algorithm.Barrier Cplex.Barrier CPX_ALG_BARRIER
5 Cplex.parameters.lpmethod.values.sifting IloCplex::Sifting IloCplex.Algorithm.Sifting Cplex.Sifting CPX_ALG_SIFTING
6 Cplex.parameters.lpmethod.values.concurrent IloCplex::Concurrent IloCplex.Algorithm.Concurrent Cplex.Concurrent CPX_ALG_CONCURRENT