30.01.2015 Views

ILOG CPLEX C++ API 9.0 Reference Manual

ILOG CPLEX C++ API 9.0 Reference Manual

ILOG CPLEX C++ API 9.0 Reference Manual

SHOW MORE
SHOW LESS

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

IloCplex<br />

IloCplex effectively treats all models as MIQCP models. That is, it allows the most<br />

general case, although the solution algorithms make efficient use of special cases, such<br />

as taking advantage of the absence of quadratic terms in the formulation. The method<br />

solve begins by solving the root relaxation of the MIQCP model, where all<br />

integrality constraints and SOSs are ignored. If the model has no integrality constraints<br />

or SOSs, then the optimization is complete once the root relaxation is solved. Otherwise,<br />

IloCplex uses a branch and cut procedure to reintroduce the integrality constraints or<br />

SOSs. See the <strong>ILOG</strong> <strong>CPLEX</strong> User's <strong>Manual</strong> for more information about branch & cut.<br />

Most users can simply call solve to solve their models. However, several parameters<br />

are available for users who require more control. Perhaps the most important one is<br />

IloCplex::RootAlg, which determines the algorithm used to solve the root<br />

relaxation. Possible settings, as defined in IloCplex::Algorithm, are:<br />

◆<br />

◆<br />

◆<br />

◆<br />

◆<br />

◆<br />

IloCplex::Auto IloCplex automatically selects an algorithm. This is the default<br />

setting.<br />

IloCplex::Primal Use the primal simplex algorithm. This option is not available for<br />

quadratically constrained problems (QCPs).<br />

IloCplex::Dual Use the dual simplex algorithm. This option is not available for<br />

quadratically constrained problems (QCPs).<br />

IloCplex::Network Use network simplex on the embedded network part of the<br />

model, followed by dual simplex on the entire model. This option is not available<br />

for quadratically constrained problems.<br />

IloCplex::Barrier Use the barrier algorithm.<br />

IloCplex::Sifting Use the sifting algorithm. This option is not available for<br />

quadratic problems. If selected nonetheless, IloCplex defaults to the<br />

IloCplex::Auto setting.<br />

◆ IloCplex::Concurrent Use the several algorithms concurrently. This option is not<br />

available for quadratic problems. If selected nonetheless, IloCplex defaults to the<br />

IloCplex::Auto setting.<br />

Numerous other parameters allow you to control algorithmic aspects of the optimizer.<br />

See the nested enumerations IloCplex::IntParam,<br />

IloCplex::DoubleParam, and IloCplex#StringParam for further<br />

information. Parameters are set with the method setParam.<br />

Even higher levels of control can be achieved through goals (see IloCplex::Goal)<br />

or through callbacks (see IloCplex::Callback and its extensions).<br />

Information about a Solution<br />

The solve method returns an IloBool value indicating whether (IloTrue) or not<br />

(IloFalse) a solution (not necessarily the optimal one) has been found. Further<br />

information about the solution can be queried with the method getStatus. The return<br />

<strong>ILOG</strong> <strong>CPLEX</strong> <strong>C++</strong> <strong>API</strong> <strong>9.0</strong> REFERENCE M ANUAL 48

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!