Go to the documentation of this file.
12 #ifndef COUENNE_EXPRAUX_HPP
13 #define COUENNE_EXPRAUX_HPP
22 class CouenneCutGenerator;
92 {
return new exprAux (*
this, d);}
98 virtual void print (std::ostream & = std::cout,
115 int DepList (std::set <int> &deplist,
214 int signDiff = (e0 -> sign () - e1 -> sign ());
216 assert (e0 -> Image () != NULL);
217 assert (e1 -> Image () != NULL);
219 return ((signDiff < 0) ||
221 ((e0 -> Image () != NULL) &&
222 (e1 -> Image () != NULL) &&
223 (e0 -> Image () -> compare (*(e1 -> Image ())) < 0))));
230 int, expression *, expression *);
status of lower/upper bound of a variable, to be checked/modified in bound tightening
int multiplicity_
number of appearances of this aux in the formulation.
virtual bool isInteger()
is this expression integer?
void crossBounds()
Get lower and upper bound of an expression (if any)
expression * Image() const
The expression associated with this auxiliary variable.
enum intType integer_
is this variable integer?
int varIndex_
The index of the variable.
intType
integrality type of an auxiliary variable: unset, continuous, integer
virtual ~exprAux()
Destructor.
exprAux(expression *, int, int, intType=Unset, Domain *=NULL, enum auxSign=expression::AUX_EQ)
Constructor.
expression * simplify()
simplify
void increaseMult()
Tell this variable appears once more.
virtual void setInteger(bool value)
Set this variable as integer.
virtual exprVar * clone(Domain *d=NULL) const
Cloning method.
void zeroMult()
Disable this auxiliary variable.
Cut Generator for linear convexifications.
virtual expression * Ub()
Get upper bound expression.
general include file for different compilers
bool operator()(exprAux *e0, exprAux *e1) const
expression * image_
The expression associated with this auxiliary variable.
dig_type
type of digging when filling the dependence list
OsiObject for auxiliary variables $w=f(x)$.
expression * lb_
lower bound, a function of the associated expression and the bounds on the variables in the expressio...
CouenneObject * properObject(CouenneCutGenerator *c, CouenneProblem *p, Bonmin::BabSetupBase *base, JnlstPtr jnlst)
return proper object to handle expression associated with this variable (NULL if this is not an auxil...
void decreaseMult()
Tell this variable appears once less (standardized within exprSum, for instance)
double CouNumber
main number type in Couenne
int rank_
used in rank-based branching variable choice: original variables have rank 1; auxiliary w=f(x) has ra...
bool top_level_
True if this variable replaces the lhs of a constraint, i.e., if it is a top level variable in the DA...
virtual void print(std::ostream &=std::cout, bool=false) const
Print expression.
void draw_cuts(OsiCuts &, const CouenneCutGenerator *, int, expression *, expression *)
allow to draw function within intervals and cuts introduced
bool & top_level()
return top_level_
auxSign
"sign" of the constraint defining an auxiliary.
void linkDomain(Domain *d)
link this variable to a domain
int Linearity()
Get a measure of "how linear" the expression is (see CouenneTypes.h)
virtual bool isDefinedInteger()
is this expression defined as integer?
nodeType
type of a node in an expression tree
void Image(expression *image)
Sets expression associated with this auxiliary variable.
void generateCuts(OsiCuts &, const CouenneCutGenerator *, t_chg_bounds *=NULL, int=-1, CouNumber=-COUENNE_INFINITY, CouNumber=COUENNE_INFINITY)
generate cuts for expression associated with this auxiliary
int Multiplicity()
How many times this variable appears.
Domain * domain_
Pointer to a descriptor of the current point/bounds.
Structure for comparing expressions.
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
CouNumber operator()()
Null function for evaluating the expression.
expression * ub_
upper bound, a function of the associated expression and the bounds on the variables in the expressio...
virtual enum auxSign sign() const
return its sign in the definition constraint
enum nodeType Type() const
Node type.
virtual int rank()
used in rank-based branching variable choice
Class for MINLP problems with symbolic information.
virtual expression * Lb()
Get lower bound expression.
enum auxSign sign_
"sign" of the defining constraint
Define a dynamic point+bounds, with a way to save and restore previous points+bounds through a LIFO s...