IBM Support

Guidelines for performance long sequences of easy problems

Question & Answer


Question

I have an application that solves a long series of MIPs that take less than a second to solve. A more recent version of CPLEX actually runs significantly slower than an older version. How can I recapture the performance of the older version?

Answer


CPLEX is designed primarily to solve challenging problems that take
at least a few seconds to solve. For such models, initializations at the
beginning of the solve can pay big dividends later on. However, some
applications don't involve a single, challenging solve. Rather, they involve
a long sequence of MIPs that all solve quickly. If such solves take
less than a second, the overhead associated with these initializations can
become significant. More recent versions of CPLEX have more features that
help solve time-consuming MIPs. However, this also means that they may have
more overhead at the start of the optimization, which can lead to slower
solve times for easy MIPs.

In such cases, using non default CPLEX parameter settings can help performance.
But, rather than increasing the intensity of various features to enable CPLEX
to make better decisions during its MIP algorithm, in this case one usually
should reduce the intensity of features that, even if useful, cannot
compensate for their initial overhead because of the short overall solve time.

As with any performance tuning, consult the node log of the
optimization to help identify potential sources of improvement in
performance. Easy models tend to generate very modest size node logs,
but one should still distinguish between easy models that solve at the
root node and ones that require branching.

The primary parameters that impose modest overhead at the start of the
optimization are parallel threads and presolve. So, consider setting
the thread count to 1, turning off presolve, or both. Also consider
reducing the intensity with which cuts and heuristics are applied at
the root node. This may involve disabling them completely, or applying
them less frequently. Regarding the latter, limiting the number of cut passes
to 1 or some small number can help. Regarding heuristics,
applying them less frequently than the default of 10 nodes, or setting
CPLEX's MIP emphasis parameter to 1 (which avoids some of the more
expensive heuristics) can help.

In some cases, use of undocumented parameters to disable a subset of presolve
features may help. In such cases, contact IBM technical support for
assistance.

Some more detailed subject of this, along with other situations where reducing the intensity
of certain MIP parameters can help performance, can be found here.

[{"Product":{"code":"SSSA5P","label":"IBM ILOG CPLEX Optimization Studio"},"Business Unit":{"code":"BU059","label":"IBM Software w\/o TPS"},"Component":"Performance","Platform":[{"code":"PF025","label":"Platform Independent"}],"Version":"12.6.2;12.6.1;12.6.0.1;12.6;12.5.1;12.5.0.1;12.5;12.4.0.1;12.4;12.3;12.2.0.1;12.2;12.6.3","Edition":"All Editions","Line of Business":{"code":"LOB10","label":"Data and AI"}}]

Document Information

Modified date:
16 June 2018

UID

swg21986418