Preprocessing: Presolver and Aggregator
By default, the preprocessing parameters of ILOG CPLEX are on. That is, ILOG CPLEX customarily preprocesses problems by simplifying constraints, reducing problem size, and eliminating redundancy. Its presolver tries to reduce the size of a problem by decreasing the number of rows and columns. Its aggregator tries to eliminate variables and rows through substitution. However, if your problem contains no redundancy nor other opportunities for simplification, then it will solve faster and it will save memory if you turn off the preprocessing in ILOG CPLEX.
By default, ILOG CPLEX will not invoke the aggregator when the presolver is off.
Rarely, a preprocessed problem may prove more difficult than the original. In such cases, to improve performance, turn the presolver off or alternatively, specify a particular number of passes for the presolver to make through the model by setting the numpass
parameter to a positive number.
Occasionally, the substitutions that the ILOG CPLEX aggregator makes will increase matrix density and thus make each iteration too expensive to be advantageous. In such cases, lower the preprocessing fill parameter; it limits substitutions to minimize the addition of nonzeros. ILOG CPLEX will make fewer substitutions as a consequence, and the resulting problem will be less dense.
To lower the preprocessing fill parameter:
By default, ILOG CPLEX applies its aggregator once when it is using the LP optimizers. For some problems, it may be worthwhile to apply the aggregator more than once. In those cases, set the preprocessing aggregator parameter to a positive integer value.
To apply the aggregator more than once:
In cases where your model may be primal infeasible or unbounded (dual infeasible), it may be desirable to control the kinds of presolve reductions which CPLEX makes, in order to make your analysis of the outcome of optimization more certain. These reductions can be divided into two types: primal reductions and dual reductions. A reduction is primal if it doesn't depend on the objective function. A reduction is dual if it doesn't depend on the right hand side. By default, presolve performs both kinds of reductions.
Under the default, if the presolved model is infeasible, we know only that the original model is either infeasible or unbounded. But if presolve has performed only primal reductions and the presolved model is infeasible, then we have full assurance that the original model is also infeasible. Similarly if presolve has performed only dual reductions and the presolved model is unbounded, then the original model is verified as unbounded.
To control the dual reductions performed by presolve. In the:
can be used to select one of the following values:
- 0 = no primal and dual reductions
- 1 = only primal reductions
- 2 = only dual reductions
- 3 = both primal and dual reductions
If your problem includes network structures, there is a possibility that ILOG CPLEX preprocessing may eliminate those structures from your model. For that reason, you should consider turning off preprocessing before you invoke the network optimizer.
The dependency checker strengthens problem reduction by detecting redundant constraints. Such reductions are usually most effective with the primal-dual barrier optimizer.
To turn on the dependency checker to strengthen reduction:
To reduce memory usage, presolve may compress the arrays used for storage of the original model. This can make more memory available for the use of the optimizer that the user has called. Under default settings CPLEX automatically determines, from characteristics of the model, whether to perform this compression. You can explicitly turn this feature on or off by setting the presolve compression parameter to -1 for off, or 1 for on; the default of 0 specifies the automatic setting.
To set presolve compression:
In case you want to save the preprocessed version of a problem: