exprDiv Class Reference

class for divisions More...

#include <exprDiv.hpp>

Inheritance diagram for exprDiv:

Inheritance graph
[legend]
Collaboration diagram for exprDiv:

Collaboration graph
[legend]
List of all members.

Public Member Functions

 exprDiv (expression **al, int n=2)
 Constructor.
 exprDiv (expression *arg0, expression *arg1)
 Constructor with two arguments given explicitly.
expressionclone (Domain *d=NULL) const
 Cloning method.
std::string printOp () const
 Print operator.
CouNumber operator() ()
 Function for the evaluation of the expression.
CouNumber gradientNorm (const double *x)
 return l-2 norm of gradient at given point
expressiondifferentiate (int index)
 Differentiation.
expressionsimplify ()
 Simplification.
int Linearity ()
 Get a measure of "how linear" the expression is (see CouenneTypes.h).
void getBounds (expression *&lb, expression *&ub)
 Get lower and upper bound of an expression (if any).
void getBounds (CouNumber &lb, CouNumber &ub)
 Get value of lower and upper bound of an expression (if any).
exprAuxstandardize (CouenneProblem *p, bool addAux=true)
 Reduce expression in standard form, creating additional aux variables (and constraints).
void generateCuts (expression *w, OsiCuts &cs, const CouenneCutGenerator *cg, t_chg_bounds *=NULL, int=-1, CouNumber=-COUENNE_INFINITY, CouNumber=COUENNE_INFINITY)
 Generate equality between *this and *w.
virtual enum expr_type code ()
 Code for comparisons.
bool isInteger ()
 is this expression integer?
bool impliedBound (int, CouNumber *, CouNumber *, t_chg_bounds *)
 Implied bound processing.
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 closestFeasible (expression *varind, expression *vardep, CouNumber &left, CouNumber &right) const
 compute $y^{lv}$ and $y^{uv}$ for Violation Transfer algorithm
virtual bool isCuttable (CouenneProblem *problem, int index) const
 can this expression be further linearized or are we on its concave ("bad") side

Detailed Description

class for divisions

Definition at line 23 of file exprDiv.hpp.


Constructor & Destructor Documentation

exprDiv::exprDiv ( expression **  al,
int  n = 2 
) [inline]

Constructor.

Definition at line 28 of file exprDiv.hpp.

Referenced by clone().

exprDiv::exprDiv ( expression arg0,
expression arg1 
) [inline]

Constructor with two arguments given explicitly.

Definition at line 32 of file exprDiv.hpp.


Member Function Documentation

expression* exprDiv::clone ( Domain d = NULL  )  const [inline, virtual]

Cloning method.

Reimplemented from expression.

Definition at line 36 of file exprDiv.hpp.

References exprOp::clonearglist(), exprDiv(), and exprOp::nargs_.

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

Print operator.

Reimplemented from exprOp.

Definition at line 40 of file exprDiv.hpp.

CouNumber exprDiv::operator() (  )  [inline, virtual]

Function for the evaluation of the expression.

Implements expression.

Definition at line 114 of file exprDiv.hpp.

References exprOp::arglist_.

CouNumber exprDiv::gradientNorm ( const double *  x  )  [virtual]

return l-2 norm of gradient at given point

Reimplemented from expression.

Definition at line 252 of file exprDiv.cpp.

References exprOp::arglist_, COUENNE_INFINITY, expression::Index(), and expression::Value().

expression * exprDiv::differentiate ( int  index  )  [virtual]

Differentiation.

Reimplemented from expression.

Definition at line 79 of file exprDiv.cpp.

References exprOp::arglist_, and expression::dependsOn().

expression * exprDiv::simplify (  )  [virtual]

Simplification.

Reimplemented from exprOp.

Definition at line 24 of file exprDiv.cpp.

References exprOp::arglist_, CONST, COUENNE_EPS, COUENNE_EPS_SIMPL, exprOp::simplify(), exprOp::Type(), and expression::Value().

int exprDiv::Linearity (  )  [inline, virtual]

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

Reimplemented from exprOp.

Definition at line 56 of file exprDiv.hpp.

References exprOp::arglist_, CONST, NONLINEAR, and exprOp::Type().

void exprDiv::getBounds ( expression *&  lb,
expression *&  ub 
) [virtual]

Get lower and upper bound of an expression (if any).

Reimplemented from expression.

Definition at line 108 of file exprDiv.cpp.

References exprOp::arglist_.

Referenced by generateCuts(), getBounds(), and isInteger().

void exprDiv::getBounds ( CouNumber lb,
CouNumber ub 
) [virtual]

Get value of lower and upper bound of an expression (if any).

Reimplemented from expression.

Definition at line 128 of file exprDiv.cpp.

References exprOp::arglist_, COUENNE_INFINITY, getBounds(), and safeDiv().

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

Reduce expression in standard form, creating additional aux variables (and constraints).

Reimplemented from exprOp.

Definition at line 23 of file conv-exprDiv.cpp.

References exprOp::standardize().

void exprDiv::generateCuts ( expression w,
OsiCuts &  cs,
const CouenneCutGenerator cg,
t_chg_bounds = NULL,
int  = -1,
CouNumber  = -COUENNE_INFINITY,
CouNumber  = COUENNE_INFINITY 
) [virtual]

Generate equality between *this and *w.

Reimplemented from expression.

Definition at line 31 of file conv-exprDiv.cpp.

References exprOp::arglist_, COUENNE_EPS, getBounds(), expression::Index(), k, t_chg_bounds::lower(), t_chg_bounds::UNCHANGED, unifiedProdCuts(), t_chg_bounds::upper(), w, and x.

virtual enum expr_type exprDiv::code (  )  [inline, virtual]

Code for comparisons.

Reimplemented from exprOp.

Definition at line 81 of file exprDiv.hpp.

References COU_EXPRDIV.

bool exprDiv::isInteger (  )  [virtual]

is this expression integer?

Reimplemented from exprOp.

Definition at line 159 of file exprDiv.cpp.

References exprOp::arglist_, COUENNE_EPS, COUENNE_round, getBounds(), and nu.

Referenced by impliedBound().

bool exprDiv::impliedBound ( int  ,
CouNumber ,
CouNumber ,
t_chg_bounds  
) [virtual]

Implied bound processing.

Reimplemented from expression.

Definition at line 19 of file impliedBounds-exprDiv.cpp.

References exprOp::arglist_, c, t_chg_bounds::CHANGED, CONST, COUENNE_EPS, expression::Index(), isInteger(), t_chg_bounds::setLower(), t_chg_bounds::setUpper(), exprOp::Type(), updateBound(), and expression::Value().

CouNumber exprDiv::selectBranch ( const CouenneObject obj,
const OsiBranchingInformation *  info,
expression *&  var,
double *&  brpts,
double *&  brDist,
int &  way 
) [virtual]

Set up branching object by evaluating many branching points for each expression's arguments.

Reimplemented from expression.

Definition at line 19 of file branchExprDiv.cpp.

References exprOp::arglist_, computeMulBrDist(), COUENNE_EPS, COUENNE_INFINITY, COUENNE_NEAR_BOUND, expression::Index(), CouenneObject::Reference(), TWO_LEFT, TWO_RAND, and TWO_RIGHT.

void exprDiv::closestFeasible ( expression varind,
expression vardep,
CouNumber left,
CouNumber right 
) const [virtual]

compute $y^{lv}$ and $y^{uv}$ for Violation Transfer algorithm

Reimplemented from expression.

Definition at line 210 of file exprDiv.cpp.

References exprOp::arglist_, c, expression::Index(), and x.

virtual bool exprDiv::isCuttable ( CouenneProblem problem,
int  index 
) const [inline, virtual]

can this expression be further linearized or are we on its concave ("bad") side

Reimplemented from expression.

Definition at line 107 of file exprDiv.hpp.


The documentation for this class was generated from the following files:
Generated on Tue Mar 30 03:12:12 2010 by  doxygen 1.4.7