ILOG CPLEX 11.0 User's Manual > Discrete Optimization > Solution Pool: Generating and Keeping Multiple Solutions > Choosing Whether to Accumulate or Populate > Advanced Use: Interaction of MIP Optimization and Populate

Should you call MIP optimization and then populate, or should you call populate alone?

You can call populate after you call the MIP optimizer, or you can call populate on its own after you read or create a model. In order to decide which to do, you need to know more about the two procedures.

Recall that the algorithm underlying populate works in two phases. If you call the MIP optimizer after the model is read, it will gather and store information about the search as it solves the model. In practice, its activity constitutes the first phase of the populate algorithm. In the general case, if you then call populate, populate will re-use the information stored by the MIP optimizer and carry out only the second phase.

In contrast, if you call populate immediately after the model is read, populate will perform both the first phase and the second phase.

If you specify a nondefault setting of the pool intensity parameter, then calling the MIP optimizer and afterwards calling populate will give the same results in terms of performance and solutions generated as calling populate alone. (The exception to this generalization occurs when the pool intensity parameter is set at its default value, 0 (zero) that is, automatic. For details about that case, see the documentation of the solution pool intensity parameter.)

Calling populate alone is simpler than calling populate after MIP optimization. However, if you want more control over the details of the two phases (for example, if you want to specify different stopping criteria for each phase), then you need to call MIP optimization followed by populate, instead of calling populate alone. The risk associated with this approach is that populate might not be able to reuse the information about the tree from the previous MIP optimization; in that case, populate will start from scratch; that is, it again performs the first phase, followed by the second phase. In particular, this repetition of the first phase will happen if you increase the pool intensity parameter between the call to MIP optimization and the call to populate.

More information about this topic can be found the documentation about the parameter SolnPoolIntensity (CPX_PARAM_SOLNPOOLINTENSITY) in the ILOG CPLEX Parameter Reference Manual.

In short, if you want the simplicity of a black box, call populate alone; if you need more control, call MIP optimization, then populate.