Sifting optimizer
Describes conditions favoring the sifting optimizer.
Sifting was developed to exploit the characteristics of models with large aspect ratios (that is, a large ratio of the number of columns to the number of rows). In particular, the method is well suited to models with a large aspect ratio such that an optimal solution can be expected to place most variables at their lower bounds. The sifting algorithm can be thought of as an extension to the familiar simplex method. It starts by solving a subproblem (known as the working problem) consisting of all rows but only a small subset of the full set of columns, by assuming an arbitrary value (such as its lower bound) for the solution value of each of the remaining columns. This solution is then used to re-evaluate the reduced costs of the remaining columns. Any columns whose reduced costs violate the optimality criterion become candidates to be added to the working problem for the next major sifting iteration. When no candidates are present, the solution of the working problem is optimal for the full problem, and sifting terminates.
The choice of optimizer to solve the working problem
is governed by the
sifting subproblem algorithm
parameter. You can set this parameter to any of the values accepted by the
algorithm for continuous linear problems
parameter except for Concurrent and of course Sifting itself.
At the default setting of the
sifting subproblem algorithm
parameter, CPLEX chooses
the optimizer automatically, typically switching between barrier and
primal simplex as the optimization proceeds. It is recommended that
you not turn off the barrier crossover step (that is, do not set the
barrier crossover algorithm
parameter to -1 when you use
the sifting optimizer, so that CPLEX can carry out this switching as
needed.
If you invoke concurrent optimization on a linear program (LP), the concurrent optimzer checks the aspect ratio of the model. If the concurrent optimizer finds a large aspect ratio, and if ten or more threads are available to CPLEX, then the concurrent optimizer also invokes sifting on the LP model. For more information about concurrent optimization, see the topic Concurrent optimizer.