Solving the extracted model with ILOG CPLEX involves solving one or a series of LPs or QPs:
cplex.isMIP()
returns IloTrue
in such a case. Chapter 8, Solving Mixed Integer Programming Problems discusses the algorithms applied.
cplex.setParam(IloCplex::RootAlg, alg); |
where alg
is a member of the nested enumeration type:
Note that the last two choices, Sifting
and Concurrent
, are not available for QP models. As a nested enumeration type, the fully qualified names that must be used in the program are IloCplex::Primal
, IloCplex::Dual
, and so on. Table 1.2 displays the meaning of the optimizer options defined by IloCplex::Algorithm
.
Though ILOG CPLEX defaults will prove sufficient to solve most of the problems, ILOG CPLEX offers a variety of parameters to control various algorithmic choices. ILOG CPLEX parameters can assume values of type bool
, num
, int
, and string
. IloCplex
provides four categories of parameters that are listed in the nested enumeration types IloCplex::BoolParam
, IloCplex::IntParam, IloCplex::NumParam, IloCplex::StringParam
.
To access the current value of a parameter that interests you from the Concert Technology Library, use the method getParam
. To access the default value of a parameter, use the method getDefault
. Use the methods getMin
and g
etMax
to access the minimum and maximum values of num
and int
type parameters.
In particular, these enumeration types are: IloCplex::MIPEmphasisType
, ,
IloCplex::VariableSelect
, IloCplex::NodeSelect
, IloCplex::PrimalPricing
, IloCplex::DualPricing
., and IloCplex::BranchDirection
. They are used for parameters IloCplex::MIPEmphasis
, IloCplex::VarSel
, IloCplex::NodeSel
, IloCplex::PPriInd
, IloCplex::DPriInd
, and IloCplex::BrDir
, respectively. Only the parameter IloCplex::MIPEmphasis
may be of importance for general use.
IloCplex::setParam(BoolParam, value); IloCplex::setParam(IntParam, value); IloCplex::setParam(NumParam, value); IloCplex::setParam(StringParam, value); |
For example, the numerical parameter IloCplex::EpOpt
controlling the optimality tolerance for the simplex algorithms can be set to 0.0001 by calling
cplex.setParam(IloCplex::EpOpt, 0.0001); |
The method setDefaults
resets all parameters (except the log file) to their default values, including the ILOG CPLEX callback functions. This routine resets the callback functions to NULL
.
When solving MIPs, additional controls of the solution process are provided. Priority orders and branching directions can be used to control the branching in a static way. These are discussed in Heuristics. These controls are static in the sense that they allow you to control the solution process based on data that does not change during the solution and can thus be set up before solving the model.
Dynamic control of the solution process of MIPs is provided through goals or control callbacks. They are discussed in Goals in IloCplex, and in Using Callbacks. Goals and callbacks allow you to control the solution process based on information that is generated during the solution process.