[Couenne] Possible bug in adding branching objects

Pete Janes ppjanes at gmail.com
Tue Jun 8 05:06:38 EDT 2010


Hi Pietro,

I notice that there might be a bug in the way Couenne adds new branching
objects in main/BonCouenneSetup.cpp. Here, an object associated with an
exprVar is added:

continuousSolver_ -> addObjects (nobj, objects)

if 1) it is an integer variable, or 2) it has at least another variable
which is dependent on it. I think the problem lies with the way the
dependency determined in problem/fillDependence.cpp as it does not consider
a linear variable as a dependent. For example:

w_3 = x_1 ^ 2
w_4 = w_3 + w_2

w_4 is clearly dependent on w_3, but the dependency graph does not include
this relationship as w_4 is linear. This is seen in the code
in problem/fillDependence.cpp:

for (std::vector <exprVar *>::iterator i = variables_.begin ();
       i != variables_.end (); ++i) {

    if (((*i) -> Type () == AUX)                           // consider aux's
only
&& ((*i) -> Image () -> Linearity () > LINEAR)) {  // and nonlinear
    }

This affects how the number of infeasibilities are counted, as
checkInfeasibilities() is only called on branching variables. This means
that some solution calculated by CLP may be accepted as a solution to the
primal problem, when they are actually infeasible. I am using an old
modified version of Couenne, but I have checked the latest source code. I am
not sure why I didn't notice this problem before.

Regards,

Pete
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://list.coin-or.org/pipermail/couenne/attachments/20100608/0b483b9b/attachment.html 


More information about the Couenne mailing list