Solution Pool and Multi-Scenario Logging
Populating a solution pool or solving for multiple scenarios involves looking for more than one solution, which leads to different logging output. In particular, logging for these methods comes in two phases. In the first, the log shows progress towards finding one provably optimal solution (for multi-scenario optimization, this is the best solution over all scenarios). The log for this first phase is identical to the standard MIP log. It shows progress in the lower and upper bounds, and the phase terminates when these are sufficiently close to each other.
The second phase starts once attention has shifted towards finding solutions beyond that one optimal solution. You will see a message indicating that a new phase has begun. When populating a solution pool, you will see:
Optimal solution found at node 7407 - now completing solution pool...When solving for multiple scenarios, you will see:
Optimal solution found at node 15203 - now completing multiple scenarios...
You will also see an additional header, which is slightly different from the standard MIP header. For a solution pool:
Nodes | Current Node | Pool Obj. Bounds | Work | | Worst | Expl Unexpl | Obj Depth IntInf | Incumbent BestBd Gap | It/Node TimeFor multiple scenarios:
Nodes | Current Node | Scenario Obj. Bounds | Work | | Worst | Expl Unexpl | Obj Depth IntInf | Incumbent BestBd Gap | It/Node TimeThe most important difference versus the standard header is in the
Incumbentcolumn. In the standard MIP log, this column shows the objective value for the best solution found so far. For a solution pool or multiple scenarios, this column shows the objective value for the worst solution. This of course isn't the worst solution ever found. Rather, it shows the objective value for the worst solution among all the solutions that the MIP solver has been asked to find. For example, if you have set the PoolSolutions parameter to 100 to ask for the 100 best solutions, this column will show the objective value for the 100th best solution found so far. If you are solving a multi-scenario model, this column shows the worst solution found over all scenarios. As the search progresses, the value in this column will improve monotonically as the MIP solver replaces this worst solution with better solutions.
One other important difference in this second phase log is in the
meaning of the
BestBd column. In the standard MIP log, this
column gives a bound on the best possible objective value for any
solution. In this log, this column shows the best possible objective
value for any solution that has not yet been found. To give an
example, if a minimization model has a unique optimal solution at
objective 100, the second phase will begin once the lower bound
reaches 100, and the
BestBd column will show a value larger
than 100 once the solver has determined that only one solution exists
at objective 100.
Incumbent columns allow you to track
progress towards completion of the solution pool or multi-scenario
solve. Specifically, once the best bound for any solution that has
not yet been found reaches the objective value for the worst solution,
we know that we can't improve that solution and we can stop.