After optimization has completed, you can retrieve solutions from the solution pool using a few parameters and attributes. The SolCount attribute indicates how many solutions were retained by the MIP solver. The best solution can always be obtained through the X attribute. Sub-optimal solutions can be obtained by first setting the SolutionNumber parameter and then querying the Xn attribute to obtain the solution or the PoolObjVal attribute to obtain the objective value for the corresponding solution.
Solutions in the solution pool are ordered from best to worst.
For example, to retrieve the worst solution kept by the MIP solver,
you'd first query
SolCount to determine how many solutions are
available, then set the
SolutionNumber parameter to
SolCount-1, then query the
The PoolObjBound attribute gives a
bound on the objective value of undiscovered solutions (i.e., of
solutions that aren't already in the solution pool). Further tree
exploration won't find solutions having a better objective value
The difference between this attribute and
ObjBound is that the latter gives a
bound on the objective for any solution, while
PoolObjBound only refers to undiscovered
solutions (which are not in the solution pool).
is always at least as tight as
ObjBound and it is often
strictly tighter than
ObjBound will always take the same value.
If the solver terminated early (e.g. due to reaching the time limit),
you can still use the attribute
to get a count of how many of the best solutions you found: any
solutions having objective values that are at least as good as
PoolObjBound are among the best. This is illustrated
in the examples on the next section.