[Couenne] Obscure error message when running Couenne

design at np-soft.ru design at np-soft.ru
Tue Jun 1 12:44:27 EDT 2010


Dear developers,

I have found some strange cutting planes. 
If (x in -32000.0..32000.0) then constraint z = x ^ 2 gives the planes: 
z+2*x>=-1
z+x>=-0.25
z-x>=-0.25
z-2*x>=-1

If (x in -31000.0..31000.0) then constraint z = x ^ 2 gives "normal" planes:

z+62000*x>=-961000000
z+31000*x>=-240250000
z-31000*x>=-240250000
z-62000*x>=-961000000

It looks conditions with "powThres" sets range to -1..1 for variable x.

Unfortunately I can not have tests in C++. Sources were converted to VB. Of
course strange cutting planes maybe a result of my conversion error. But it
seems the follow code in "exprPow::generateCuts" has a "bug":

    if (k > COUENNE_EPS) {
      if (u >   powThres) u = CoinMax (x,l) + powStep;
      if (l < - powThres) l = CoinMin (x,u) - powStep;
    }
    else {
      if (fabs (l) < COUENNE_EPS) l =  1. / powThres; // l --> 0+
      if (fabs (u) < COUENNE_EPS) u = -1. / powThres; // u --> 0-
    }
    addPowEnvelope (cg, cs, w_ind, x_ind, x, w, k, l, u, sign); 

k is 2, l is -32000, h is 32000, x is zero, powStep is 1. If execute below
code then  l is sets to -1 and u is sets to 1 ...
 
Sergey 






More information about the Couenne mailing list