11 #ifndef COUENNE_EXPRDIV_HPP
12 #define COUENNE_EXPRDIV_HPP
19 #define BR_NEXT_ZERO 1e-3
93 const OsiBranchingInformation *
info,
119 #define SAFE_COEFFICIENT 1e9
Cut Generator for linear convexifications.
exprDiv(expression **al, int n=2)
Constructor.
int Linearity()
Get a measure of "how linear" the expression is (see CouenneTypes.h)
void fint fint fint real fint real real real real real real real real real fint real fint fint fint real fint fint fint fint * info
OsiObject for auxiliary variables $w=f(x)$.
status of lower/upper bound of a variable, to be checked/modified in bound tightening ...
bool is_boundbox_regular(register CouNumber b1, register CouNumber b2)
check if bounding box is suitable for a multiplication/division convexification constraint ...
void getBounds(expression *&lb, expression *&ub)
Get lower and upper bound of an expression (if any)
expression * clone(Domain *d=NULL) const
Cloning method.
exprDiv(expression *arg0, expression *arg1)
Constructor with two arguments given explicitly.
virtual enum expr_type code()
Code for comparisons.
CouNumber operator()()
Function for the evaluation of the expression.
virtual CouNumber selectBranch(const CouenneObject *obj, const OsiBranchingInformation *info, expression *&var, double *&brpts, double *&brDist, int &way)
Set up branching object by evaluating many branching points for each expression's arguments...
std::string printOp() const
Print operator.
virtual enum nodeType Type() const
Node type.
auxSign
"sign" of the constraint defining an auxiliary.
expression ** clonearglist(Domain *d=NULL) const
clone argument list (for use with clone method)
virtual bool isCuttable(CouenneProblem *problem, int index) const
can this expression be further linearized or are we on its concave ("bad") side
Class for MINLP problems with symbolic information.
expression * simplify()
Simplification.
expression ** arglist_
argument list is an array of pointers to other expressions
double CouNumber
main number type in Couenne
int nargs_
number of arguments (cardinality of arglist)
general n-ary operator-type expression: requires argument list.
bool impliedBound(int, CouNumber *, CouNumber *, t_chg_bounds *, enum auxSign=expression::AUX_EQ)
Implied bound processing.
CouNumber gradientNorm(const double *x)
return l-2 norm of gradient at given point
bool isInteger()
is this expression integer?
expression * differentiate(int index)
Differentiation.
virtual void closestFeasible(expression *varind, expression *vardep, CouNumber &left, CouNumber &right) const
compute $y^{lv}$ and $y^{uv}$ for Violation Transfer algorithm
expr_type
code returned by the method expression::code()
exprAux * standardize(CouenneProblem *p, bool addAux=true)
Reduce expression in standard form, creating additional aux variables (and constraints) ...
void fint fint fint real fint real real real real real real real real * w
Define a dynamic point+bounds, with a way to save and restore previous points+bounds through a LIFO s...
void fint fint fint real fint real * x
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.