11 #ifndef COUENNE_EXPRCOPY_HPP 12 #define COUENNE_EXPRCOPY_HPP 108 virtual void print (std::ostream &out = std::cout,
109 bool descend =
false)
const;
virtual CouNumber Value() const
value
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.
expression * differentiate(int index)
differentiation
expr_type
code returned by the method expression::code()
CouNumber gradientNorm(const double *x)
return l-2 norm of gradient at given point
int Linearity()
get a measure of "how linear" the expression is (see CouenneTypes.h)
expression * Argument() const
return argument (when applicable, i.e., with univariate functions)
Cut Generator for linear convexifications.
void getBounds(CouNumber &lower, CouNumber &upper)
Get value of lower and upper bound of an expression (if any)
int compare(expression &e)
compare this with other expression
void getBounds(expression *&lower, expression *&upper)
Get lower and upper bound of an expression (if any)
expression * Image() const
return pointer to corresponding expression (for auxiliary variables only)
CouNumber inverse(expression *vardep) const
compute the inverse function
void closestFeasible(expression *varind, expression *vardep, CouNumber &left, CouNumber &right) const
closest feasible points in function in both directions
void replace(exprVar *, exprVar *)
replace occurrence of a variable with another variable
bool isaCopy() const
return true if this is a copy of something, i.e.
CouNumber value_
saved value to be used by exprStore expressions
void fillDepSet(std::set< DepNode *, compNode > *dep, DepGraph *g)
fill in dependence structure
double CouNumber
main number type in Couenne
virtual expression * clone(Domain *d=NULL) const
Cloning method.
int rank()
used in rank-based branching variable choice
bool isCuttable(CouenneProblem *problem, int index) const
can this expression be further linearized or are we on its concave ("bad") side
expression * simplify()
simplify expression (useful for derivatives)
const expression * Original() const
If this is an exprClone of a exprClone of an expr???, point to the original expr??...
expression ** ArgList() const
return arglist (when applicable, that is, with N-ary functions)
void realign(const CouenneProblem *p)
redirect variables to proper variable vector
int Index() const
Get variable index in problem.
virtual bool isDefinedInteger()
is this expression DEFINED as integer?
virtual void print(std::ostream &out=std::cout, bool descend=false) const
I/O.
Class for MINLP problems with symbolic information.
void generateCuts(expression *w, OsiCuts &cs, const CouenneCutGenerator *cg, t_chg_bounds *chg=NULL, int wind=-1, CouNumber lb=-COUENNE_INFINITY, CouNumber ub=COUENNE_INFINITY)
generate convexification cut for constraint w = this
dig_type
type of digging when filling the dependence list
bool isBijective() const
indicating if function is monotonically increasing
expression * copy_
the expression this object is a (reference) copy of
int DepList(std::set< int > &deplist, enum dig_type type=ORIG_ONLY)
fill in the set with all indices of variables appearing in the expression
expression ** ArgPtr()
return pointer to argument (when applicable, i.e., with univariate functions)
Define a dynamic point+bounds, with a way to save and restore previous points+bounds through a LIFO s...
nodeType
type of a node in an expression tree
convexity
convexity type of an expression
bool isInteger()
is this expression integer?
enum expr_type code()
code for comparisons
exprCopy(expression *copy)
Empty constructor - used in cloning method of exprClone.
exprAux * standardize(CouenneProblem *p, bool addAux=true)
Create standard formulation of this expression.
OsiObject for auxiliary variables $w=f(x)$.
enum convexity convexity() const
either CONVEX, CONCAVE, AFFINE, or NONCONVEX
int Multiplicity()
multiplicity of a variable: how many times this variable occurs in expressions throughout the problem
int nArgs() const
Return number of arguments (when applicable, that is, with N-ary functions)
expression * Copy() const
return copy of this expression (only makes sense in exprCopy)
void ArgList(expression **al)
set arglist (used in deleting nodes without deleting children)
status of lower/upper bound of a variable, to be checked/modified in bound tightening
enum nodeType Type() const
node type
bool impliedBound(int wind, CouNumber *l, CouNumber *u, t_chg_bounds *chg)
implied bound processing
general include file for different compilers
virtual CouNumber operator()()
null function for evaluating the expression
virtual ~exprCopy()
Destructor – CAUTION: this is the only destructive destructor, exprClone and exprStore do not destr...