> Languages and APIs > ILOG Concert Technology for C++ Users > Solving Concert Technology Models with IloCplex > Choosing an Optimizer

Solving the extracted model with ILOG CPLEX involves solving one or a series of continuous relaxations:

The optimizer option used for solving the first continuous relaxation (whether it is the only one or just the first in a series of problems) is controlled by setting the root algorithm parameter:

cplex.setParam(IloCplex::RootAlg, alg);

where alg is a member of the nested enumeration:

enum IloCplex::Algorithm {
NoAlg,
AutoAlg,
Primal,
Dual,
Barrier,
Network,
Sifting,
Concurrent
};

The choice Sifting is not available for QP models. Only the Barrier option is available for QCP 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.

Table 1.2 Optimizer Options in IloCplex::Algorithm
use the primal simplex algorithm 
use the dual simplex algorithm 
use the barrier algorithm. The type of crossover performed after the barrier algorithm is determined by parameter IloCplex::BarCrossAlg
use the primal network simplex algorithm on an embedded network followed by the dual simplex algorithm for LPs and the primal simplex algorithm for QPs on the entire problem 
use the sifting algorithm 
use multiple algorithms concurrently on a multiprocessor system 

If the extracted model requires the solution of more than one continuous relaxation, the algorithm for solving all but the first is controlled by the NodeAlg parameter:

cplex.setParam(IloCplex::NodeAlg, alg).