Couenne::exprOp Class Reference

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

#include <CouenneExprOp.hpp>

Inheritance diagram for Couenne::exprOp:

Inheritance graph
[legend]
Collaboration diagram for Couenne::exprOp:

Collaboration graph
[legend]
List of all members.

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 expressionsimplify ()
 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 exprAuxstandardize (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

Protected Attributes

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

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

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

Constructor.

Definition at line 45 of file CouenneExprOp.hpp.

Couenne::exprOp::exprOp ( expression arg0,
expression arg1 
) [inline]

Constructor with two arguments (for convenience).

Definition at line 51 of file CouenneExprOp.hpp.

References arglist_.

exprOp::~exprOp (  )  [virtual]

Destructor.

Definition at line 28 of file exprOp.cpp.

References arglist_, and nargs_.

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

virtual enum nodeType Couenne::exprOp::Type (  )  const [inline, virtual]

Node type.

Reimplemented from Couenne::expression.

Definition at line 41 of file CouenneExprOp.hpp.

References Couenne::N_ARY.

Referenced by Couenne::exprPow::differentiate(), Couenne::exprSum::generateCuts(), Couenne::exprGroup::generateCuts(), Couenne::exprPow::getBounds(), Couenne::exprDiv::impliedBound(), Couenne::exprPow::Linearity(), Couenne::exprDiv::Linearity(), Couenne::exprGroup::print(), Couenne::exprQuad::realign(), Couenne::exprGroup::realign(), replace(), Couenne::exprPow::selectBranch(), Couenne::exprSum::simplify(), Couenne::exprSub::simplify(), Couenne::exprPow::simplify(), Couenne::exprDiv::simplify(), standardize(), and Couenne::exprPow::standardize().

expression** Couenne::exprOp::ArgList (  )  const [inline, virtual]

return argument list

Reimplemented from Couenne::expression.

Definition at line 66 of file CouenneExprOp.hpp.

References arglist_.

Referenced by compare().

virtual void Couenne::exprOp::ArgList ( expression **  al  )  [inline, virtual]

set arglist (used in deleting nodes without deleting children)

Reimplemented from Couenne::expression.

Definition at line 70 of file CouenneExprOp.hpp.

References arglist_.

int Couenne::exprOp::nArgs (  )  const [inline, virtual]

return number of arguments

Reimplemented from Couenne::expression.

Definition at line 74 of file CouenneExprOp.hpp.

References nargs_.

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

I/O.

Reimplemented from Couenne::expression.

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

Definition at line 40 of file exprOp.cpp.

References arglist_, Couenne::INSIDE, MAX_ARG_LINE, nargs_, Couenne::PRE, printOp(), and printPos().

virtual enum pos Couenne::exprOp::printPos (  )  const [inline, virtual]

print position (PRE, INSIDE, POST)

Reimplemented in Couenne::exprLBCos, Couenne::exprUBCos, Couenne::exprLBDiv, Couenne::exprUBDiv, Couenne::exprLBMul, Couenne::exprUBMul, Couenne::exprLBSin, Couenne::exprUBSin, Couenne::exprMax, and Couenne::exprMin.

Definition at line 82 of file CouenneExprOp.hpp.

References Couenne::INSIDE.

Referenced by print().

virtual std::string Couenne::exprOp::printOp (  )  const [inline, virtual]

print operator

Reimplemented in Couenne::exprLBCos, Couenne::exprUBCos, Couenne::exprLBDiv, Couenne::exprUBDiv, Couenne::exprLBMul, Couenne::exprUBMul, Couenne::exprLBSin, Couenne::exprUBSin, Couenne::exprDiv, Couenne::exprMax, Couenne::exprMin, Couenne::exprOddPow, Couenne::exprPow, Couenne::exprSub, and Couenne::exprSum.

Definition at line 86 of file CouenneExprOp.hpp.

Referenced by print().

int 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.

Definition at line 207 of file exprOp.cpp.

References arglist_, and nargs_.

Referenced by Couenne::exprGroup::DepList().

expression * exprOp::simplify (  )  [virtual]

simplification

Reimplemented from Couenne::expression.

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

Definition at line 20 of file simplify.cpp.

References arglist_, and nargs_.

Referenced by Couenne::exprSum::simplify(), Couenne::exprSub::simplify(), Couenne::exprQuad::simplify(), Couenne::exprPow::simplify(), Couenne::exprGroup::simplify(), and Couenne::exprDiv::simplify().

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.

References arglist_, Couenne::expression::clone(), and nargs_.

Referenced by Couenne::exprSum::clone(), Couenne::exprSub::clone(), Couenne::exprPow::clone(), Couenne::exprOddPow::clone(), Couenne::exprMin::clone(), Couenne::exprMax::clone(), Couenne::exprDiv::clone(), Couenne::exprUBMul::clone(), Couenne::exprLBMul::clone(), Couenne::exprUBDiv::clone(), and Couenne::exprLBDiv::clone().

int exprOp::shrink_arglist ( CouNumber  ,
CouNumber   
)

compress argument list

Definition at line 56 of file simplifiers.cpp.

References arglist_, COUENNE_EPS, k, and nargs_.

Referenced by Couenne::exprSum::simplify().

virtual int Couenne::exprOp::Linearity (  )  [inline, virtual]

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

Reimplemented from Couenne::expression.

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

Definition at line 110 of file CouenneExprOp.hpp.

References Couenne::NONLINEAR.

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

generate auxiliary variable

Reimplemented from Couenne::expression.

Reimplemented in Couenne::exprDiv, Couenne::exprMax, Couenne::exprMin, Couenne::exprOddPow, Couenne::exprPow, Couenne::exprSub, and Couenne::exprSum.

Definition at line 140 of file exprOp.cpp.

References arglist_, Couenne::AUX, nargs_, Type(), and Couenne::VAR.

Referenced by Couenne::exprPow::standardize(), and Couenne::exprDiv::standardize().

virtual enum expr_type Couenne::exprOp::code (  )  [inline, virtual]

return code to classify type of expression

Reimplemented from Couenne::expression.

Reimplemented in Couenne::exprDiv, Couenne::exprGroup, Couenne::exprMax, Couenne::exprMin, Couenne::exprOddPow, Couenne::exprPow, Couenne::exprQuad, Couenne::exprSub, and Couenne::exprSum.

Definition at line 117 of file CouenneExprOp.hpp.

References Couenne::COU_EXPROP.

Referenced by compare().

bool exprOp::isInteger (  )  [virtual]

is this expression integer?

Reimplemented from Couenne::expression.

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

Definition at line 185 of file exprOp.cpp.

References arglist_, COUENNE_EPS, Couenne::expression::getBounds(), and nargs_.

Referenced by Couenne::exprSub::impliedBound(), and Couenne::exprGroup::isInteger().

int exprOp::compare ( exprOp  )  [virtual]

compare with other generic exprOp

Definition at line 69 of file exprOp.cpp.

References ArgList(), arglist_, code(), Couenne::COU_EXPRGROUP, Couenne::COU_EXPRQUAD, and nargs_.

Referenced by Couenne::exprSum::exprSum(), and Couenne::exprSub::simplify().

int exprOp::rank (  )  [virtual]

used in rank-based branching variable choice

Reimplemented from Couenne::expression.

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

Definition at line 116 of file exprOp.cpp.

References arglist_, nargs_, and r.

Referenced by Couenne::exprGroup::rank().

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

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.

References arglist_, g, and nargs_.

Referenced by Couenne::exprGroup::fillDepSet().

void exprOp::replace ( exprVar ,
exprVar  
) [virtual]

replace variable with other

Reimplemented from Couenne::expression.

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

Definition at line 156 of file exprOp.cpp.

References arglist_, Couenne::AUX, Couenne::expression::Index(), Couenne::N_ARY, nargs_, Type(), Couenne::UNARY, Couenne::VAR, w, and x.

void 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.

Definition at line 232 of file exprOp.cpp.

References arglist_, and nargs_.


Member Data Documentation

expression** Couenne::exprOp::arglist_ [protected]

argument list is an array of pointers to other expressions

Definition at line 35 of file CouenneExprOp.hpp.

Referenced by ArgList(), Couenne::exprUBSin::clone(), Couenne::exprLBSin::clone(), Couenne::exprUBCos::clone(), Couenne::exprLBCos::clone(), clonearglist(), Couenne::exprPow::closestFeasible(), Couenne::exprDiv::closestFeasible(), compare(), DepList(), Couenne::exprSum::differentiate(), Couenne::exprSub::differentiate(), Couenne::exprQuad::differentiate(), Couenne::exprPow::differentiate(), Couenne::exprGroup::differentiate(), Couenne::exprDiv::differentiate(), Couenne::exprLBCos::exprLBCos(), Couenne::exprLBSin::exprLBSin(), Couenne::exprMax::exprMax(), Couenne::exprMin::exprMin(), exprOp(), Couenne::exprSum::exprSum(), Couenne::exprUBCos::exprUBCos(), Couenne::exprUBSin::exprUBSin(), fillDepSet(), Couenne::exprSum::generateCuts(), Couenne::exprSub::generateCuts(), Couenne::exprPow::generateCuts(), Couenne::exprGroup::generateCuts(), Couenne::exprDiv::generateCuts(), Couenne::exprSum::getBounds(), Couenne::exprSub::getBounds(), Couenne::exprDiv::getBounds(), Couenne::exprPow::getBounds(), Couenne::exprPow::getFixVar(), Couenne::exprOddPow::getFixVar(), Couenne::exprPow::gradientNorm(), Couenne::exprDiv::gradientNorm(), Couenne::exprSub::impliedBound(), Couenne::exprSum::impliedBound(), Couenne::exprDiv::impliedBound(), Couenne::exprPow::isCuttable(), Couenne::exprPow::isInteger(), Couenne::exprDiv::isInteger(), isInteger(), Couenne::exprSum::Linearity(), Couenne::exprPow::Linearity(), Couenne::exprSub::Linearity(), Couenne::exprDiv::Linearity(), Couenne::exprSum::operator()(), Couenne::exprSub::operator()(), Couenne::exprPow::operator()(), Couenne::exprOddPow::operator()(), Couenne::exprMin::operator()(), Couenne::exprMax::operator()(), Couenne::exprDiv::operator()(), Couenne::exprUBSin::operator()(), Couenne::exprLBSin::operator()(), Couenne::exprUBMul::operator()(), Couenne::exprLBMul::operator()(), Couenne::exprUBDiv::operator()(), Couenne::exprLBDiv::operator()(), Couenne::exprUBCos::operator()(), Couenne::exprLBCos::operator()(), print(), rank(), realign(), replace(), Couenne::exprPow::selectBranch(), Couenne::exprDiv::selectBranch(), shrink_arglist(), simplify(), Couenne::exprSum::simplify(), Couenne::exprSub::simplify(), Couenne::exprPow::simplify(), Couenne::exprDiv::simplify(), Couenne::exprSub::standardize(), Couenne::exprSum::standardize(), standardize(), Couenne::exprPow::standardize(), and ~exprOp().

int Couenne::exprOp::nargs_ [protected]

number of arguments (cardinality of arglist)

Definition at line 36 of file CouenneExprOp.hpp.

Referenced by Couenne::exprSum::clone(), Couenne::exprSub::clone(), Couenne::exprPow::clone(), Couenne::exprOddPow::clone(), Couenne::exprMin::clone(), Couenne::exprMax::clone(), Couenne::exprDiv::clone(), Couenne::exprUBMul::clone(), Couenne::exprLBMul::clone(), Couenne::exprUBDiv::clone(), Couenne::exprLBDiv::clone(), clonearglist(), compare(), DepList(), Couenne::exprSum::differentiate(), Couenne::exprSub::differentiate(), Couenne::exprQuad::differentiate(), Couenne::exprGroup::differentiate(), Couenne::exprSum::exprSum(), fillDepSet(), Couenne::exprSum::generateCuts(), Couenne::exprGroup::generateCuts(), Couenne::exprSum::getBounds(), Couenne::exprSum::impliedBound(), isInteger(), Couenne::exprSum::Linearity(), nArgs(), Couenne::exprSum::operator()(), Couenne::exprMin::operator()(), Couenne::exprMax::operator()(), Couenne::exprGroup::print(), print(), rank(), realign(), replace(), shrink_arglist(), simplify(), Couenne::exprSum::simplify(), Couenne::exprSum::standardize(), standardize(), and ~exprOp().


The documentation for this class was generated from the following files:
Generated on Thu Nov 10 03:13:58 2011 by  doxygen 1.4.7