Changeset 352 for stable/0.2/Couenne
 Timestamp:
 Jun 5, 2010 9:23:42 AM (10 years ago)
 Location:
 stable/0.2/Couenne/src/convex/operators
 Files:

 3 edited
Legend:
 Unmodified
 Added
 Removed

stable/0.2/Couenne/src/convex/operators

Property
svn:mergeinfo
set to
/stable/BSP/Couenne/src/convex/operators merged eligible /trunk/Couenne/src/convex/operators merged eligible

Property
svn:mergeinfo
set to

stable/0.2/Couenne/src/convex/operators/convexprExp.cpp
r159 r352 60 60 } 61 61 62 // no need to continue if this is an expression of the form y<=e^x 63 // (the upper segment is needed only) 64 if (sign == expression::AUX_LEQ) 65 return; 66 62 67 // add tangent points: first choose sampling points 63 68 
stable/0.2/Couenne/src/convex/operators/convexprPowenvelope.cpp
r159 r352 32 32 // orthogonal with line through current and tangent point) 33 33 34 if (!(cg > isFirst ())) {34 powertriplet pt (k); 35 35 36 powertriplet pt (k);36 if (!(cg > isFirst ())) 37 37 x = powNewton (x, y, &pt); 38 }39 38 40 39 if (x<l) x=l; … … 46 45 step = (1 + log (1. + (double) (cg > nSamples ()))) * powThres / COU_MAX_COEFF; 47 46 47 // If the bounds are too large, the linearization cuts might have 48 // large coefficients. To prevent that, Couenne used to set very 49 // small fictitious bounds, resulting in 50 // 51 // 1) still valid cuts, but 52 // 2) a very abrupt change in their coefficients; 53 // 3) cuts that may result in an LP solution far away from x (this 54 // behavior recalls that of bundle methods for NDO); 55 // 4) a nonexact linearization at the bounds (in theory, necessary 56 // for convergence...). 57 // 58 // New values for l and u, if necessary, are therefore set to the 59 // maximum bounds if l and/or u are beyond them. 60 // 61 // Thanks to Sergey for pointing this out. 62 48 63 if (l <  powThres + 1) { 49 l = x  step; 50 if (u > powThres  1) 51 u = x + step; 64 l =  powThres + 1; // keeps bounds reasonably large 65 //l = x  step; 66 if (u > powThres  1) { 67 u = powThres  1; 68 //u = x + step; 69 } 52 70 } else 53 if (u > powThres  1) 54 u = x + step;55 56 powertriplet pt (k);71 if (u > powThres  1) { 72 u = powThres  1; 73 //u = x + step; 74 } 57 75 58 76 // convex envelope
Note: See TracChangeset
for help on using the changeset viewer.