Couenne 0.5.8
Loading...
Searching...
No Matches
Couenne::exprOp Class Reference

general n-ary operator-type expression: requires argument list. More...

#include <CouenneExprOp.hpp>

+ Inheritance diagram for Couenne::exprOp:
+ Collaboration diagram for Couenne::exprOp:

Public Member Functions

virtual enum nodeType Type () const
 Node type.
 
 exprOp (expression **arglist, int nargs)
 Constructor.
 
 exprOp (expression *arg0, expression *arg1)
 Constructor with two arguments (for convenience)
 
virtual ~exprOp ()
 Destructor.
 
 exprOp (const exprOp &e, Domain *d=NULL)
 Copy constructor: only allocate space for argument list, which will be copied with clonearglist()
 
expression ** ArgList () const
 return argument list
 
virtual void ArgList (expression **al)
 set arglist (used in deleting nodes without deleting children)
 
int nArgs () const
 return number of arguments
 
virtual void print (std::ostream &out=std::cout, bool=false) const
 I/O.
 
virtual enum pos printPos () const
 print position (PRE, INSIDE, POST)
 
virtual std::string printOp () const
 print operator
 
virtual 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
 
virtual expression * simplify ()
 simplification
 
expression ** clonearglist (Domain *d=NULL) const
 clone argument list (for use with clone method)
 
int shrink_arglist (CouNumber, CouNumber)
 compress argument list
 
virtual int Linearity ()
 get a measure of "how linear" the expression is (see CouenneTypes.h)
 
virtual exprAux * standardize (CouenneProblem *, bool addAux=true)
 generate auxiliary variable
 
virtual enum expr_type code ()
 return code to classify type of expression
 
virtual bool isInteger ()
 is this expression integer?
 
virtual int compare (exprOp &)
 compare with other generic exprOp
 
virtual int rank ()
 used in rank-based branching variable choice
 
virtual void fillDepSet (std::set< DepNode *, compNode > *dep, DepGraph *g)
 fill in dependence structure update dependence set with index of this variable
 
virtual void replace (exprVar *, exprVar *)
 replace variable with other
 
virtual void realign (const CouenneProblem *p)
 empty function to redirect variables to proper variable vector
 
- Public Member Functions inherited from Couenne::expression
 expression ()
 Constructor.
 
 expression (const expression &e, Domain *d=NULL)
 Copy constructor.
 
virtual ~expression ()
 Destructor.
 
virtual expression * clone (Domain *d=NULL) const
 Cloning method.
 
virtual int Index () const
 Return index of variable (only valid for exprVar and exprAux)
 
virtual expression * Argument () const
 return argument (when applicable, i.e., with univariate functions)
 
virtual expression ** ArgPtr ()
 return pointer to argument (when applicable, i.e., with univariate functions)
 
virtual expression * Image () const
 return pointer to corresponding expression (for auxiliary variables only)
 
virtual void Image (expression *image)
 set expression associated with this auxiliary variable (for compatibility with exprAux)
 
virtual CouNumber Value () const
 value (empty)
 
virtual const expression * Original () const
 If this is an exprClone of a exprClone of an expr???, point to the original expr??? instead of an exprClone – improve computing efficiency.
 
virtual CouNumber operator() ()=0
 null function for evaluating the expression
 
virtual CouNumber gradientNorm (const double *x)
 return l-2 norm of gradient at given point
 
virtual expression * differentiate (int)
 differentiation
 
virtual int dependsOn (int *ind, int n, enum dig_type type=STOP_AT_AUX)
 dependence on variable set: return cardinality of subset of the set of indices in first argument which occur in expression.
 
int dependsOn (int singleton, enum dig_type type=STOP_AT_AUX)
 version with one index only
 
virtual bool isDefinedInteger ()
 is this expression defined as an integer?
 
virtual void getBounds (expression *&, expression *&)
 Get lower and upper bound of an expression (if any)
 
virtual void getBounds (CouNumber &, CouNumber &)
 Get lower and upper bound of an expression (if any) – real values.
 
virtual 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
 
virtual enum convexity convexity () const
 either CONVEX, CONCAVE, AFFINE, or NONCONVEX
 
virtual int compare (expression &)
 compare expressions
 
virtual int compare (exprCopy &)
 compare copies of expressions
 
virtual bool impliedBound (int, CouNumber *, CouNumber *, t_chg_bounds *, enum auxSign=expression::AUX_EQ)
 does a backward implied bound processing on every expression, including exprSums although already done by Clp (useful when repeated within Couenne).
 
virtual int Multiplicity ()
 multiplicity of a variable
 
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.
 
virtual void linkDomain (Domain *d)
 empty function to update domain pointer
 
virtual bool isBijective () const
 indicating if function is monotonically increasing
 
virtual CouNumber inverse (expression *vardep) const
 compute the inverse function
 
virtual void closestFeasible (expression *varind, expression *vardep, CouNumber &left, CouNumber &right) const
 closest feasible points in function in both directions
 
virtual bool isCuttable (CouenneProblem *problem, int index) const
 can this expression be further linearized or are we on its concave ("bad") side
 
virtual bool isaCopy () const
 return true if this is a copy of something (i.e. an exprCopy)
 
virtual expression * Copy () const
 return copy of this expression (only makes sense in exprCopy)
 

Protected Attributes

expression ** arglist_
 argument list is an array of pointers to other expressions
 
int nargs_
 number of arguments (cardinality of arglist)
 

Additional Inherited Members

- Public Types inherited from Couenne::expression
enum  auxSign { AUX_UNDEF =-2 , AUX_LEQ =-1 , AUX_EQ , AUX_GEQ }
 "sign" of the constraint defining an auxiliary. More...
 

Detailed Description

general n-ary operator-type expression: requires argument list.

All non-unary and non-leaf operators, i.e., sum, subtraction, multiplication, power, division, max, min, etc. are derived from this class.

Definition at line 31 of file CouenneExprOp.hpp.

Constructor & Destructor Documentation

◆ exprOp() [1/3]

Couenne::exprOp::exprOp ( expression ** arglist,
int nargs )
inline

Constructor.

Definition at line 45 of file CouenneExprOp.hpp.

◆ exprOp() [2/3]

Couenne::exprOp::exprOp ( expression * arg0,
expression * arg1 )
inline

Constructor with two arguments (for convenience)

Definition at line 51 of file CouenneExprOp.hpp.

◆ ~exprOp()

virtual Couenne::exprOp::~exprOp ( )
virtual

Destructor.

◆ exprOp() [3/3]

Couenne::exprOp::exprOp ( const exprOp & e,
Domain * d = NULL )
inline

Copy constructor: only allocate space for argument list, which will be copied with clonearglist()

Definition at line 61 of file CouenneExprOp.hpp.

Member Function Documentation

◆ Type()

virtual enum nodeType Couenne::exprOp::Type ( ) const
inlinevirtual

Node type.

Reimplemented from Couenne::expression.

Definition at line 41 of file CouenneExprOp.hpp.

◆ ArgList() [1/2]

expression ** Couenne::exprOp::ArgList ( ) const
inlinevirtual

return argument list

Reimplemented from Couenne::expression.

Definition at line 66 of file CouenneExprOp.hpp.

◆ ArgList() [2/2]

virtual void Couenne::exprOp::ArgList ( expression ** al)
inlinevirtual

set arglist (used in deleting nodes without deleting children)

Reimplemented from Couenne::expression.

Definition at line 70 of file CouenneExprOp.hpp.

◆ nArgs()

int Couenne::exprOp::nArgs ( ) const
inlinevirtual

return number of arguments

Reimplemented from Couenne::expression.

Definition at line 74 of file CouenneExprOp.hpp.

◆ print()

virtual void Couenne::exprOp::print ( std::ostream & out = std::cout,
bool = false ) const
virtual

I/O.

Reimplemented from Couenne::expression.

Reimplemented in Couenne::exprGroup, and Couenne::exprQuad.

◆ printPos()

virtual enum pos Couenne::exprOp::printPos ( ) const
inlinevirtual

◆ printOp()

◆ DepList()

virtual int Couenne::exprOp::DepList ( std::set< int > & deplist,
enum dig_type type = ORIG_ONLY )
virtual

fill in the set with all indices of variables appearing in the expression

Reimplemented from Couenne::expression.

Reimplemented in Couenne::exprGroup, and Couenne::exprQuad.

◆ simplify()

◆ clonearglist()

expression ** Couenne::exprOp::clonearglist ( Domain * d = NULL) const
inline

clone argument list (for use with clone method)

Definition at line 97 of file CouenneExprOp.hpp.

◆ shrink_arglist()

int Couenne::exprOp::shrink_arglist ( CouNumber ,
CouNumber  )

compress argument list

◆ Linearity()

virtual int Couenne::exprOp::Linearity ( )
inlinevirtual

get a measure of "how linear" the expression is (see CouenneTypes.h)

Reimplemented from Couenne::expression.

Reimplemented in Couenne::exprBinProd, Couenne::exprDiv, Couenne::exprGroup, Couenne::exprMax, Couenne::exprMin, Couenne::exprMul, Couenne::exprMultiLin, Couenne::exprPow, Couenne::exprQuad, Couenne::exprSub, and Couenne::exprSum.

Definition at line 110 of file CouenneExprOp.hpp.

◆ standardize()

virtual exprAux * Couenne::exprOp::standardize ( CouenneProblem * ,
bool addAux = true )
virtual

◆ code()

virtual enum expr_type Couenne::exprOp::code ( )
inlinevirtual

◆ isInteger()

virtual bool Couenne::exprOp::isInteger ( )
virtual

is this expression integer?

Reimplemented from Couenne::expression.

Reimplemented in Couenne::exprDiv, Couenne::exprGroup, Couenne::exprPow, and Couenne::exprQuad.

◆ compare()

virtual int Couenne::exprOp::compare ( exprOp & )
virtual

compare with other generic exprOp

◆ rank()

virtual int Couenne::exprOp::rank ( )
virtual

used in rank-based branching variable choice

Reimplemented from Couenne::expression.

Reimplemented in Couenne::exprGroup, and Couenne::exprQuad.

◆ fillDepSet()

virtual void Couenne::exprOp::fillDepSet ( std::set< DepNode *, compNode > * dep,
DepGraph * g )
inlinevirtual

fill in dependence structure update dependence set with index of this variable

Reimplemented from Couenne::expression.

Reimplemented in Couenne::exprGroup, and Couenne::exprQuad.

Definition at line 131 of file CouenneExprOp.hpp.

◆ replace()

virtual void Couenne::exprOp::replace ( exprVar * ,
exprVar *  )
virtual

replace variable with other

Reimplemented from Couenne::expression.

Reimplemented in Couenne::exprGroup, and Couenne::exprQuad.

◆ realign()

virtual void Couenne::exprOp::realign ( const CouenneProblem * p)
virtual

empty function to redirect variables to proper variable vector

Reimplemented from Couenne::expression.

Reimplemented in Couenne::exprGroup, and Couenne::exprQuad.

Member Data Documentation

◆ arglist_

expression** Couenne::exprOp::arglist_
protected

argument list is an array of pointers to other expressions

Definition at line 35 of file CouenneExprOp.hpp.

◆ nargs_

int Couenne::exprOp::nargs_
protected

number of arguments (cardinality of arglist)

Definition at line 36 of file CouenneExprOp.hpp.


The documentation for this class was generated from the following file: