21 using namespace Couenne;
32 int w_ind = aux ->
Index (),
38 enum auxSign sign = cg -> Problem () -> Var (w_ind) -> sign ();
44 cg -> createCut (cs, ex0 * (1 - x0), sign, w_ind, 1., x_ind, - ex0);
60 oppslope = (expl -
exp (u)) / (u - l);
62 cg -> createCut (cs, expl + oppslope*l, -1,
77 if (l < - logMC) l = - logMC;
78 if (u > logMC) u = logMC;
81 cg -> addEnvelope (cs, +1,
exp,
exp, w_ind, x_ind, x, l, u, chg,
true);
Cut Generator for linear convexifications.
void generateCuts(expression *w, OsiCuts &cs, const CouenneCutGenerator *cg, t_chg_bounds *=NULL, int=-1, CouNumber=-COUENNE_INFINITY, CouNumber=COUENNE_INFINITY)
Generate convexification cuts for this expression.
CouExpr & log(CouExpr &e)
CouNumber powNewton(CouNumber xc, CouNumber yc, unary_function f, unary_function fp, unary_function fpp)
find proper tangent point to add deepest tangent cut
status of lower/upper bound of a variable, to be checked/modified in bound tightening ...
const char & lower() const
const char & upper() const
expression * argument_
single argument taken by this expression
CouExpr & exp(CouExpr &e)
virtual int Index() const
Return index of variable (only valid for exprVar and exprAux)
auxSign
"sign" of the constraint defining an auxiliary.
double CouNumber
main number type in Couenne
void getBounds(expression *&, expression *&)
Get lower and upper bound of an expression (if any)
void fint fint fint real fint real * x