ILOG CPLEX 11.0 User's Manual > Languages and APIs > ILOG Concert Technology for C++ Users > Solving the Model > Extracting a Model

This manual defines only one optimization model and uses only one instance of IloCplex at a time to solve the model. Consequently, it talks about these as the model and the cplex object. It should be noted, however, that in Concert Technology an arbitrary number of models and algorithm-objects can be created. The cplex object can be created by the constructor:

IloCplex cplex(env);

To use it to solve the model, the model must first be extracted to cplex by a call like this:

cplex.extract(model);

This method copies the data from the model into the appropriate efficient data structures, which ILOG CPLEX uses for solving the problem. It does so by extracting each of the modeling objects added to the model and each of the objects referenced by them. For every extracted modeling object, corresponding data structures are created internally in the cplex object. For readers familiar with the sparse matrix representation used internally by ILOG CPLEX, a variable becomes a column and a constraint becomes a row. As discussed later, these data structures are synchronized with the modeling objects even if the modeling objects are modified.

If you consider a variable to be part of your model, even though it is not (initially) used in any constraint, you should add this variable explicitly to the model. This practice makes sure that the variable will be extracted. This practice may also be important if you query solution information for the variable, since solution information is available only for modeling objects that are known to ILOG CPLEX because they have been extracted from a model.

If you feel uncertain about whether or not an object will be extracted, you can add it to the model to be sure. Even if an object is added multiple times, it will be extracted only once and thus will not slow the solution process down.

Since the sequence of creating the cplex object and extracting the model to it is such a common one, IloCplex provides the shortcut:

IloCplex cplex(model);

This shortcut is completely equivalent to separate calls and makes sure that the environment used for the cplex object will be the same as that used for the model when it is extracted, as required by Concert Technology. The shortcut uses the environment from the model to construct the cplex object before extraction.