cplex.isMIP()
returns IloTrue
in such a case. Chapter 5, Solving Mixed Integer Programming Problems discusses the algorithms applied.
where alg
is a member of the nested enumeration type:
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
.
If the extracted model contains more than one LP, the algorithm for solving all but the first LP is controlled by calling method cplex.setNodeAlgorithm(alg)
. The current setting for the root and node algorithm can be queried using methods:
|
Though CPLEX defaults will prove sufficient to solve most of the problems, 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.
Some integer parameters are tied to nested enumerations that define symbolic constants for the values the parameter may assume. In particular, these enumeration types are: IloCplex::MIPEmphasisType
, IloCplex::VariableSelect
, IloCplex::NodeSelect
, IloCplex::PrimalPricing
, and IloCplex::DualPricing
. They are used for parameters IloCplex::MIPEmphasis
, IloCplex::VarSel
, IloCplex::NodeSel
, IloCplex::PPriInd
, and IloCplex::DPriInd
, 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 name of 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 Priority. 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 setup before solving the model.
Dynamic control of the solution process of MIPs is provided through control callbacks. They are discussed in Using Callbacks. Callbacks allow you to control the solution process based on information that is generated during the solution process.