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

Protected Attributes

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

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 36 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::exprQuad, and Couenne::exprGroup.

◆ printPos()

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

◆ printOp()

virtual std::string Couenne::exprOp::printOp ( ) const
inlinevirtual

◆ 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::exprQuad, and Couenne::exprGroup.

◆ simplify()

virtual expression* Couenne::exprOp::simplify ( )
virtual

◆ 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::exprSum, Couenne::exprSub, Couenne::exprQuad, Couenne::exprPow, Couenne::exprMultiLin, Couenne::exprMul, Couenne::exprGroup, Couenne::exprDiv, and Couenne::exprBinProd.

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::exprQuad, Couenne::exprPow, Couenne::exprGroup, and Couenne::exprDiv.

◆ 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::exprQuad, and Couenne::exprGroup.

◆ 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::exprQuad, and Couenne::exprGroup.

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::exprQuad, and Couenne::exprGroup.

◆ 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::exprQuad, and Couenne::exprGroup.

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: