[Couenne] Bug in adjust of branching intervals?

Francois Margot fmargot at andrew.cmu.edu
Fri May 20 09:55:36 EDT 2011


Hi:

I believe that there is a bug in
trunk/Couenne/src/branch/CouenneBranchingObject.cpp. Around line 163, we
have:

if (integer && (::isInteger (brpt))&& (way==!
firstBranch_))                                                     
  brpt += 1.;                                                           
 

But this is incorrect: if firstBranch_=1 and branchIndex_=0, we have
way=1 (up branch) for the first branch and way=0 (down branch) for the
second.

if the bounds on the variable are currently [0, 2] and brpt is 1, the
interval will be

up branch: [1, 2] (correct)
down branch: [0, 2] (incorrect, it should be [0, 0]).

To fix this, brpt += 1.; should be replaced by 

if(way) { // up branch increase brpt
  brpt += 1.;
}
else {
  brpt -= 1.;
}                                                               

Francois




More information about the Couenne mailing list