IloCplex treats all problems it solves as Mixed Integer Programming (MIP) problems. The algorithm used by IloCplex for solving MIP is known as branch & cut (referred to in some contexts as branch & bound) and is described in more detail in the ILOG CPLEX User's Manual. For this tutorial, it is sufficient to know that this consists of solving a sequence of LPs or QPs that are generated in the course of the algorithm. The first LP or QP to be solved is known as the root, while all the others are referred to as nodes and are derived from the root or from other nodes. If the model extracted to the cplex object is a pure LP or QP (no integer variables), then it will be fully solved at the root.
As mentioned in Optimizer Options on page 13, various optimizer options are provided for solving LPs and QPs. While the default optimizer works well for a wide variety of models, IloCplex allows you to control which option to use for solving the root and for solving the nodes, respectively, by the following lines:
void IloCplex::setParam(IloCplex::RootAlg, alg) void IloCplex::setParam(IloCplex::NodeAlg, alg) |
where IloCplex::Algorithm is an enumeration type. It defines the following symbols with their meaning:
IloCplex::Network | |
IloCplex::Sifting | |
IloCplex::Concurrent |
For QP models, only the AutoAlg, Dual, Primal, Barrier, and Network algorithms are applicable.