Couenne::exprPow Class Reference

Power of an expression (binary operator), $ f(x)^k$ with $ k$ constant. More...

#include <CouenneExprPow.hpp>

Inheritance diagram for Couenne::exprPow:

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

Collaboration graph
[legend]
List of all members.

Public Member Functions

 exprPow (expression **al, int n=2)
 Constructor.
 exprPow (expression *arg0, expression *arg1)
 Constructor with only two arguments.
expressionclone (Domain *d=NULL) const
 cloning method
virtual std::string printOp () const
 print operator
virtual CouNumber operator() ()
 compute power
virtual CouNumber gradientNorm (const double *x)
 return l-2 norm of gradient at given point
virtual expressiondifferentiate (int index)
 differentiation
virtual expressionsimplify ()
 simplification
virtual int Linearity ()
 get a measure of "how linear" the expression is
virtual bool isInteger ()
 is this expression integer?
virtual void getBounds (expression *&, expression *&)
 Get lower and upper bound of an expression (if any).
virtual void getBounds (CouNumber &lb, CouNumber &ub)
 Get value of lower and upper bound of an expression (if any).
virtual exprAuxstandardize (CouenneProblem *p, bool addAux=true)
 reduce expression in standard form, creating additional aux variables (and constraints)
virtual 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 expressiongetFixVar ()
 return an index to the variable's argument that is better fixed in a branching rule for solving a nonconvexity gap
virtual enum expr_type code ()
 code for comparison
virtual 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

Power of an expression (binary operator), $ f(x)^k$ with $ k$ constant.

Definition at line 29 of file CouenneExprPow.hpp.


Constructor & Destructor Documentation

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

Constructor.

Definition at line 34 of file CouenneExprPow.hpp.

Referenced by clone(), differentiate(), and getBounds().

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

Constructor with only two arguments.

Definition at line 38 of file CouenneExprPow.hpp.


Member Function Documentation

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

cloning method

Reimplemented from Couenne::expression.

Reimplemented in Couenne::exprOddPow.

Definition at line 42 of file CouenneExprPow.hpp.

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

Referenced by differentiate().

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

print operator

Reimplemented from Couenne::exprOp.

Reimplemented in Couenne::exprOddPow.

Definition at line 46 of file CouenneExprPow.hpp.

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

compute power

Implements Couenne::expression.

Reimplemented in Couenne::exprOddPow.

Definition at line 160 of file CouenneExprPow.hpp.

References Couenne::exprOp::arglist_, and Couenne::safe_pow().

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

return l-2 norm of gradient at given point

Reimplemented from Couenne::expression.

Definition at line 357 of file exprPow.cpp.

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

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

differentiation

Reimplemented from Couenne::expression.

Definition at line 114 of file exprPow.cpp.

References alp, Couenne::exprOp::arglist_, clone(), Couenne::CONST, Couenne::expression::dependsOn(), exprPow(), Couenne::log(), Couenne::exprOp::Type(), and Couenne::expression::Value().

expression * exprPow::simplify (  )  [virtual]

simplification

Reimplemented from Couenne::exprOp.

Definition at line 31 of file exprPow.cpp.

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

int exprPow::Linearity (  )  [virtual]

get a measure of "how linear" the expression is

ZERO = 0: a zero CONSTANT = 1: a constant LINEAR = 2: linear QUADRATIC = 3: quadratic NONLINER = 4: nonlinear non-quadratic

Reimplemented from Couenne::exprOp.

Definition at line 183 of file exprPow.cpp.

References Couenne::exprOp::arglist_, Couenne::CONST, Couenne::CONSTANT, COUENNE_EPS, COUENNE_round, Couenne::LINEAR, Couenne::NONLINEAR, Couenne::QUADRATIC, Couenne::exprOp::Type(), and Couenne::expression::Value().

bool exprPow::isInteger (  )  [virtual]

is this expression integer?

Reimplemented from Couenne::exprOp.

Definition at line 229 of file exprPow.cpp.

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

Referenced by isCuttable().

void exprPow::getBounds ( expression *&  ,
expression *&   
) [virtual]

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

Reimplemented from Couenne::expression.

Reimplemented in Couenne::exprOddPow.

Definition at line 31 of file conv-exprPow-getBounds.cpp.

References Couenne::exprOp::arglist_, Couenne::CONST, COUENNE_EPS, COUENNE_INFINITY, COUENNE_round, exprPow(), Couenne::exprOp::Type(), and Couenne::expression::Value().

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

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

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

Reimplemented from Couenne::expression.

Reimplemented in Couenne::exprOddPow.

Definition at line 185 of file conv-exprPow-getBounds.cpp.

References Couenne::exprOp::arglist_, COUENNE_EPS, COUENNE_INFINITY, COUENNE_round, getBounds(), k, and Couenne::safe_pow().

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

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

Reimplemented from Couenne::exprOp.

Reimplemented in Couenne::exprOddPow.

Definition at line 37 of file conv-exprPow.cpp.

References Couenne::exprOp::arglist_, Couenne::CONST, COUENNE_EPS_SIMPL, Couenne::log(), M_E, Couenne::exprOp::standardize(), Couenne::exprOp::Type(), and Couenne::expression::Value().

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

Reimplemented in Couenne::exprOddPow.

Definition at line 104 of file conv-exprPow.cpp.

References Couenne::addPowEnvelope(), Couenne::exprOp::arglist_, Couenne::expression::AUX_GEQ, Couenne::expression::AUX_LEQ, COU_MAX_COEFF, COUENNE_EPS, COUENNE_INFINITY, COUENNE_round, createCut(), getBounds(), Couenne::expression::Index(), k, Couenne::t_chg_bounds::lower(), Couenne::safe_pow(), Couenne::t_chg_bounds::UNCHANGED, Couenne::t_chg_bounds::upper(), Couenne::expression::Value(), w, and x.

virtual expression* Couenne::exprPow::getFixVar (  )  [inline, virtual]

return an index to the variable's argument that is better fixed in a branching rule for solving a nonconvexity gap

Reimplemented in Couenne::exprOddPow.

Definition at line 86 of file CouenneExprPow.hpp.

References Couenne::exprOp::arglist_.

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

code for comparison

Reimplemented from Couenne::exprOp.

Reimplemented in Couenne::exprOddPow.

Definition at line 90 of file CouenneExprPow.hpp.

References Couenne::COU_EXPRPOW.

virtual bool Couenne::exprPow::impliedBound ( int  ,
CouNumber ,
CouNumber ,
t_chg_bounds ,
enum  auxSign = expression::AUX_EQ 
) [virtual]

implied bound processing

Reimplemented in Couenne::exprOddPow.

CouNumber exprPow::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.

Reimplemented in Couenne::exprOddPow.

Definition at line 35 of file branchExprPow.cpp.

References Couenne::exprOp::arglist_, Couenne::CONST, COUENNE_EPS, COUENNE_INFINITY, COUENNE_round, Couenne::expression::Index(), k, Couenne::CouenneObject::MID_INTERVAL, negPowSelectBranch(), Couenne::powNewton(), Couenne::projectSeg(), Couenne::safe_pow(), Couenne::TWO_LEFT, Couenne::TWO_RAND, Couenne::TWO_RIGHT, Couenne::exprOp::Type(), and Couenne::expression::Value().

void exprPow::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 284 of file exprPow.cpp.

References Couenne::exprOp::arglist_, COUENNE_EPS, COUENNE_round, k, Couenne::safe_pow(), Couenne::expression::Value(), and x.

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

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

Reimplemented from Couenne::expression.

Reimplemented in Couenne::exprOddPow.

Definition at line 367 of file exprPow.cpp.

References Couenne::exprOp::arglist_, COUENNE_round, Couenne::expression::Index(), isInteger(), Couenne::safe_pow(), Couenne::expression::Value(), and x.


The documentation for this class was generated from the following files:
Generated on Wed Nov 30 03:13:25 2011 by  doxygen 1.4.7