Couenne::exprDiv Class Reference

class for divisions, $ \frac{f(x)}{g(x)} $ More...

#include <CouenneExprDiv.hpp>

Inheritance diagram for Couenne::exprDiv:

Inheritance graph
[legend]
Collaboration diagram for Couenne::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() ()
 Compute division.
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 *, enum auxSign=expression::AUX_EQ)
 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, $ \frac{f(x)}{g(x)} $

Definition at line 24 of file CouenneExprDiv.hpp.


Constructor & Destructor Documentation

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

Constructor.

Definition at line 29 of file CouenneExprDiv.hpp.

Referenced by clone(), and differentiate().

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

Constructor with two arguments given explicitly.

Definition at line 33 of file CouenneExprDiv.hpp.


Member Function Documentation

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

Cloning method.

Reimplemented from Couenne::expression.

Definition at line 37 of file CouenneExprDiv.hpp.

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

Referenced by differentiate().

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

Print operator.

Reimplemented from Couenne::exprOp.

Definition at line 41 of file CouenneExprDiv.hpp.

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

Compute division.

Implements Couenne::expression.

Definition at line 115 of file CouenneExprDiv.hpp.

References Couenne::exprOp::arglist_.

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

return l-2 norm of gradient at given point

Reimplemented from Couenne::expression.

Definition at line 291 of file exprDiv.cpp.

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

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

Differentiation.

Reimplemented from Couenne::expression.

Definition at line 87 of file exprDiv.cpp.

References Couenne::exprOp::arglist_, clone(), Couenne::expression::dependsOn(), and exprDiv().

expression * exprDiv::simplify (  )  [virtual]

Simplification.

Reimplemented from Couenne::exprOp.

Definition at line 31 of file exprDiv.cpp.

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

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

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

Reimplemented from Couenne::exprOp.

Definition at line 57 of file CouenneExprDiv.hpp.

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

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

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

Reimplemented from Couenne::expression.

Definition at line 147 of file exprDiv.cpp.

References Couenne::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 Couenne::expression.

Definition at line 167 of file exprDiv.cpp.

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

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

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

Reimplemented from Couenne::exprOp.

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

References Couenne::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 Couenne::expression.

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

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

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

Code for comparisons.

Reimplemented from Couenne::exprOp.

Definition at line 82 of file CouenneExprDiv.hpp.

References Couenne::COU_EXPRDIV.

bool exprDiv::isInteger (  )  [virtual]

is this expression integer?

Reimplemented from Couenne::exprOp.

Definition at line 198 of file exprDiv.cpp.

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

Referenced by impliedBound().

bool exprDiv::impliedBound ( int  ,
CouNumber ,
CouNumber ,
t_chg_bounds ,
enum  auxSign = expression::AUX_EQ 
)

Implied bound processing.

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

References Couenne::exprOp::arglist_, Couenne::expression::AUX_GEQ, Couenne::expression::AUX_LEQ, c, Couenne::t_chg_bounds::CHANGED, Couenne::CONST, COUENNE_EPS, COUENNE_INFINITY, Couenne::expression::Index(), isInteger(), Couenne::t_chg_bounds::setLower(), Couenne::t_chg_bounds::setUpper(), Couenne::exprOp::Type(), Couenne::updateBound(), and Couenne::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 Couenne::expression.

Definition at line 20 of file branchExprDiv.cpp.

References Couenne::exprOp::arglist_, Couenne::computeMulBrDist(), COUENNE_EPS, COUENNE_INFINITY, COUENNE_NEAR_BOUND, Couenne::expression::Index(), Couenne::CouenneObject::Reference(), Couenne::TWO_LEFT, Couenne::TWO_RAND, and Couenne::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 Couenne::expression.

Definition at line 249 of file exprDiv.cpp.

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

virtual bool Couenne::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 Couenne::expression.

Definition at line 108 of file CouenneExprDiv.hpp.


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