[Cbc] How to get the lower bound?
Gabrielle A. Grun
grun at cs.sfu.ca
Mon Nov 8 20:02:16 EST 2010
HI Thomas,
bestObjective_ is a member variable of CbcModel not associated to any
specific node. It is updated in CbcModel setBestSolution (CBC_Message how,
double & objectiveValue, const double *solutionIn, bool
fixVariables) when the objective value of an integer solution "beats"
the incumbent bestObjective_ value(a cutoff is used)
if bestObjective_ is unchanged from the point of root node, then no integer
solution was found in the branch and cut process.
If the best objective printed by Cbc IS less than that of commercial
products for the same node count limit ( that there are different ways of
counting nodes), either cbc has found an integer solution with a "better"
objective function value or most likely, there is something wrong with Cbc,
the other products or your use of them.
Take care.
Gabrielle
----- Original Message -----
From: Thomas Schoenemann
To: cbc at list.coin-or.org
Sent: Monday, November 08, 2010 1:02 AM
Subject: Re: [Cbc] How to get the lower bound?
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
_______________________________________________
Cbc mailing list
Cbc at list.coin-or.org
http://list.coin-or.org/mailman/listinfo/cbc
More information about the Cbc
mailing list