[Cbc] How to get the lower bound?

Thomas Schoenemann tosch at maths.lth.se
Mon Nov 8 04:02:23 EST 2010


Dear Gabrielle and John,

I am interested in the best proven lower bound. I did not know about the 
getMinimizationObjValue() function, so that already helps somewhat. As for the 
printouts, I did notice them and found that the values were consistently lower 
than those printed out by commercial products. I also had the impression that 
the value never changed after the root node. If you split the root node into 
two and solve both lp-relaxations, I would like to know the lower of the two 
objectives. This should be the best proven lower bound, and every time you 
solve the two children of a node you can propagate this value to all of its 
ancestors. Is this done in the current implementation of Cbc?

The main reason I asked this question now is an upcoming deadline on Thursday. 
The respective observations I made throughout the last half a year and they 
all date at least a month back. I am very sorry, but due to the deadline I 
cannot give you specific information right now. I'll investigate next week!

Best regards,
   Thomas

Am Sonntag, 7. November 2010 19:34:54 schrieb Gabrielle A. Grun:
> Hi Thomas,
>
> is this what you are after?
> /// Get best objective function value as minimization
> inline double getMinimizationObjValue() const
> { return bestObjective_;};
> [CbcModel.hpp]
>
> You should be seeing bestObjective_ in any case as John says.
>
> {CBC_END,5,1,"Partial search - best objective %g (best possible %g), took
> %d iterations and %d nodes (%.2f seconds)"},
> CbcMessage.cpp]
>
> status_=1;
> if (!status_) {
> // Set best possible unless stopped on gap
> if(secondaryStatus_ != 2)
> bestPossibleObjective_=bestObjective_;
> handler_->message(CBC_END_GOOD,messages_)
> << bestObjective_ << numberIterations_ << numberNodes_<<getCurrentSeconds()
> << CoinMessageEol ;
> } else {
> handler_->message(CBC_END,messages_)
> << bestObjective_ <<bestPossibleObjective_
> << numberIterations_ << numberNodes_<<getCurrentSeconds()
> << CoinMessageEol ;
> }
> CbcModel::branchAndBound---------CbcModel.cpp]
>
> Take care.
>
>
> Gabrielle
> ----- Original Message -----
> From: Thomas Schoenemann
> To: cbc at list.coin-or.org
> Sent: Sunday, November 07, 2010 7:22 AM
> Subject: [Cbc] How to get the lower bound?
>
>
> Dear all,
>
> several of my problems cannot be solved exactly by Cbc (or any other
> solver),
> so I set a limit on the number of nodes. In this case, most commercial
> products provide the tightest lowest bound from the part of the branch-and-
> bound that was actually executed. Is there a way to get this information in
> Cbc? So far I only found the value of the root-relaxation and the value of
> the
> last round of cuts at the root node, but the latter only by reading it off
> from the output on the screen.
>
> Best regards,
>   Thomas
>
> _______________________________________________
> Cbc mailing list
> Cbc at list.coin-or.org
> http://list.coin-or.org/mailman/listinfo/cbc
>
> _______________________________________________
> Cbc mailing list
> Cbc at list.coin-or.org
> http://list.coin-or.org/mailman/listinfo/cbc



More information about the Cbc mailing list