13 #include "OsiSolverInterface.hpp"
19 using namespace Couenne;
28 int w_ind = w ->
Index (),
34 enum auxSign sign = cg -> Problem () -> Var (w_ind) -> sign ();
37 cbase = !chg || cg -> isFirst (),
43 if (l >= -0) {
if (cLeft) cg -> createCut (cs, 0., sign, w_ind, 1., x_ind, -1.);}
44 else if (u <= 0) {
if (cRight) cg -> createCut (cs, 0., sign, w_ind, 1., x_ind, +1.);}
49 cg -> createCut (cs, 0., +1, w_ind, 1., x_ind, -1.);
50 cg -> createCut (cs, 0., +1, w_ind, 1., x_ind, 1.);
66 cg -> createCut (cs, -l*(slope+1.), -1, w_ind, 1., x_ind, -slope);
69 if (cLeft) cg -> createCut (cs, -2*l, -1, w_ind, 1., x_ind, -1.);
72 if (cRight) cg -> createCut (cs, 2*u, -1, w_ind, 1., x_ind, 1.);
Cut Generator for linear convexifications.
status of lower/upper bound of a variable, to be checked/modified in bound tightening ...
const char & lower() const
expression * argument_
single argument taken by this expression
virtual void getBounds(expression *&, expression *&)
Get lower and upper bound of an expression (if any)
virtual int Index() const
Return index of variable (only valid for exprVar and exprAux)
auxSign
"sign" of the constraint defining an auxiliary.
void generateCuts(expression *w, OsiCuts &cs, const CouenneCutGenerator *cg, t_chg_bounds *=NULL, int=-1, CouNumber=-COUENNE_INFINITY, CouNumber=COUENNE_INFINITY)
generate equality between *this and *w
double CouNumber
main number type in Couenne
void fint fint fint real fint real real real real real real real real * w