Couenne::exprVar Class Reference

variable-type operator More...

#include <CouenneExprVar.hpp>

Inheritance diagram for Couenne::exprVar:

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

Collaboration graph
[legend]
List of all members.

Public Member Functions

virtual enum nodeType Type () const
 Node type.
 exprVar (int varIndex, Domain *d=NULL)
 Constructor.
virtual ~exprVar ()
 destructor
 exprVar (const exprVar &e, Domain *d=NULL)
 Copy constructor.
virtual exprVarclone (Domain *d=NULL) const
 Cloning method.
int Index () const
 Get variable index in problem.
virtual expressionLb ()
 Get lower bound expression.
virtual expressionUb ()
 Get upper bound expression.
virtual CouNumberlb ()
 Get/set lower bound value.
virtual CouNumberub ()
 Get/set upper bound value.
virtual void print (std::ostream &out=std::cout, bool=false) const
 print
virtual CouNumber operator() ()
 return the value of the variable
virtual CouNumber gradientNorm (const double *x)
 return l-2 norm of gradient at given point
virtual expressiondifferentiate (int index)
 differentiation
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 void crossBounds ()
 set bounds depending on both branching rules and propagated bounds.
virtual expressionsimplify ()
 simplify
virtual int Linearity ()
 get a measure of "how linear" the expression is (see CouenneTypes.hpp)
virtual bool isDefinedInteger ()
 is this expression defined as an integer?
virtual bool isInteger ()
 is this variable integer?
virtual void getBounds (expression *&, expression *&)
 Get expressions of 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 void generateCuts (OsiCuts &, const CouenneCutGenerator *, t_chg_bounds *=NULL, int=-1, CouNumber=-COUENNE_INFINITY, CouNumber=COUENNE_INFINITY)
 generate cuts for expression associated with this auxiliary
virtual void generateCuts (expression *w, OsiCuts &cs, const CouenneCutGenerator *cg, t_chg_bounds *=NULL, int=-1, CouNumber=-COUENNE_INFINITY, CouNumber=COUENNE_INFINITY)
 generate convexification cut for constraint w = this
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 int rank ()
 rank of an original variable is always one
virtual void fillDepSet (std::set< DepNode *, compNode > *, DepGraph *)
 update dependence set with index of this variable
virtual bool isFixed ()
 is this variable fixed?
virtual void linkDomain (Domain *d)
 link this variable to a domain
virtual Domaindomain ()
 return pointer to variable domain
virtual void decreaseMult ()
virtual void zeroMult ()
 Disable variable (empty for compatibility with exprAux).
virtual void setInteger (bool value)
 Set this variable as integer (empty for compatibility with exprAux).
virtual enum convexity convexity () const
 either CONVEX, CONCAVE, AFFINE, or NONCONVEX
virtual CouenneObjectproperObject (CouenneCutGenerator *c, CouenneProblem *p, Bonmin::BabSetupBase *base, JnlstPtr jnlst_)
 return proper object to handle expression associated with this variable (NULL if this is not an auxiliary)
virtual enum auxSign sign () const
 return its sign in the definition constraint

Protected Attributes

int varIndex_
 The index of the variable.
Domaindomain_
 Pointer to a descriptor of the current point/bounds.

Detailed Description

variable-type operator

All variables of the expression must be objects of this class or of the derived exprAux class

Definition at line 46 of file CouenneExprVar.hpp.


Constructor & Destructor Documentation

Couenne::exprVar::exprVar ( int  varIndex,
Domain d = NULL 
) [inline]

Constructor.

Definition at line 60 of file CouenneExprVar.hpp.

Referenced by clone().

virtual Couenne::exprVar::~exprVar (  )  [inline, virtual]

destructor

Definition at line 65 of file CouenneExprVar.hpp.

Couenne::exprVar::exprVar ( const exprVar e,
Domain d = NULL 
) [inline]

Copy constructor.

Definition at line 68 of file CouenneExprVar.hpp.


Member Function Documentation

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

Node type.

Reimplemented from Couenne::expression.

Reimplemented in Couenne::exprAux, Couenne::exprLowerBound, and Couenne::exprUpperBound.

Definition at line 56 of file CouenneExprVar.hpp.

References Couenne::VAR.

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

Cloning method.

Reimplemented from Couenne::expression.

Reimplemented in Couenne::exprAux, Couenne::exprLowerBound, Couenne::exprUpperBound, and Couenne::exprIVar.

Definition at line 73 of file CouenneExprVar.hpp.

References exprVar().

int Couenne::exprVar::Index (  )  const [inline, virtual]

Get variable index in problem.

Reimplemented from Couenne::expression.

Definition at line 77 of file CouenneExprVar.hpp.

References varIndex_.

Referenced by Couenne::CouenneChooseStrong::chooseVariable(), Couenne::CouenneChooseStrong::doStrongBranching(), generateCuts(), Couenne::exprAux::generateCuts(), Couenne::CouenneChooseStrong::goodCandidate(), and Couenne::exprAux::properObject().

expression * exprVar::Lb (  )  [virtual]

Get lower bound expression.

Reimplemented in Couenne::exprAux.

Definition at line 65 of file exprVar.cpp.

References domain_, and varIndex_.

expression * exprVar::Ub (  )  [virtual]

Get upper bound expression.

Reimplemented in Couenne::exprAux.

Definition at line 66 of file exprVar.cpp.

References domain_, and varIndex_.

virtual CouNumber& Couenne::exprVar::lb (  )  [inline, virtual]

Get/set lower bound value.

Definition at line 85 of file CouenneExprVar.hpp.

References domain_, and varIndex_.

Referenced by Couenne::exprAux::generateCuts(), getBounds(), isFixed(), isInteger(), Couenne::exprAux::isInteger(), Couenne::exprLowerBound::operator()(), and Couenne::exprAux::properObject().

virtual CouNumber& Couenne::exprVar::ub (  )  [inline, virtual]

Get/set upper bound value.

Definition at line 86 of file CouenneExprVar.hpp.

References domain_, and varIndex_.

Referenced by Couenne::exprAux::generateCuts(), getBounds(), isFixed(), isInteger(), Couenne::exprAux::isInteger(), Couenne::exprUpperBound::operator()(), and Couenne::exprAux::properObject().

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

print

Reimplemented from Couenne::expression.

Reimplemented in Couenne::exprAux, Couenne::exprLowerBound, Couenne::exprUpperBound, and Couenne::exprIVar.

Definition at line 89 of file CouenneExprVar.hpp.

References varIndex_.

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

return the value of the variable

Implements Couenne::expression.

Reimplemented in Couenne::exprAux, Couenne::exprLowerBound, and Couenne::exprUpperBound.

Definition at line 94 of file CouenneExprVar.hpp.

References domain_, varIndex_, and x.

virtual CouNumber Couenne::exprVar::gradientNorm ( const double *  x  )  [inline, virtual]

return l-2 norm of gradient at given point

Reimplemented from Couenne::expression.

Definition at line 98 of file CouenneExprVar.hpp.

virtual expression* Couenne::exprVar::differentiate ( int  index  )  [inline, virtual]

differentiation

Reimplemented from Couenne::expression.

Reimplemented in Couenne::exprLowerBound, and Couenne::exprUpperBound.

Definition at line 102 of file CouenneExprVar.hpp.

References varIndex_.

virtual int Couenne::exprVar::DepList ( std::set< int > &  deplist,
enum dig_type  type = ORIG_ONLY 
) [inline, virtual]

fill in the set with all indices of variables appearing in the expression

Reimplemented from Couenne::expression.

Reimplemented in Couenne::exprAux.

Definition at line 107 of file CouenneExprVar.hpp.

References varIndex_.

virtual void Couenne::exprVar::crossBounds (  )  [inline, virtual]

set bounds depending on both branching rules and propagated bounds.

To be used after standardization

Reimplemented in Couenne::exprAux.

Definition at line 119 of file CouenneExprVar.hpp.

virtual expression* Couenne::exprVar::simplify (  )  [inline, virtual]

simplify

Reimplemented from Couenne::expression.

Reimplemented in Couenne::exprAux.

Definition at line 122 of file CouenneExprVar.hpp.

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

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

Reimplemented from Couenne::expression.

Reimplemented in Couenne::exprAux, Couenne::exprLowerBound, and Couenne::exprUpperBound.

Definition at line 126 of file CouenneExprVar.hpp.

References Couenne::LINEAR.

virtual bool Couenne::exprVar::isDefinedInteger (  )  [inline, virtual]

is this expression defined as an integer?

Reimplemented from Couenne::expression.

Reimplemented in Couenne::exprAux, and Couenne::exprIVar.

Definition at line 130 of file CouenneExprVar.hpp.

virtual bool Couenne::exprVar::isInteger (  )  [inline, virtual]

is this variable integer?

Reimplemented from Couenne::expression.

Reimplemented in Couenne::exprAux, and Couenne::exprIVar.

Definition at line 134 of file CouenneExprVar.hpp.

References COUENNE_round, domain_, lb(), ub(), and varIndex_.

Referenced by Couenne::CouenneChooseStrong::goodCandidate().

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

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

Reimplemented from Couenne::expression.

Definition at line 22 of file exprVar.cpp.

References domain_, lb(), ub(), and varIndex_.

Referenced by Couenne::exprAux::crossBounds().

void exprVar::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 30 of file exprVar.cpp.

References domain_, lb(), ub(), and varIndex_.

virtual void Couenne::exprVar::generateCuts ( OsiCuts &  ,
const CouenneCutGenerator ,
t_chg_bounds = NULL,
int  = -1,
CouNumber  = -COUENNE_INFINITY,
CouNumber  = COUENNE_INFINITY 
) [inline, virtual]

generate cuts for expression associated with this auxiliary

Reimplemented in Couenne::exprAux.

Definition at line 157 of file CouenneExprVar.hpp.

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

generate convexification cut for constraint w = this

Reimplemented from Couenne::expression.

Definition at line 38 of file exprVar.cpp.

References createCut(), Index(), sign(), varIndex_, and w.

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

code for comparison

Reimplemented from Couenne::expression.

Reimplemented in Couenne::exprLowerBound, and Couenne::exprUpperBound.

Definition at line 172 of file CouenneExprVar.hpp.

References Couenne::COU_EXPRVAR.

Referenced by Couenne::exprAux::properObject().

bool exprVar::impliedBound ( int  wind,
CouNumber l,
CouNumber u,
t_chg_bounds chg,
enum auxSign  sign = expression::AUX_EQ 
) [virtual]

implied bound processing

Expression w = x, upon change in lower or upper bound of w, whose index is wind

Definition at line 49 of file exprVar.cpp.

References Couenne::expression::AUX_GEQ, Couenne::expression::AUX_LEQ, Couenne::t_chg_bounds::CHANGED, Couenne::t_chg_bounds::setLower(), Couenne::t_chg_bounds::setUpper(), Couenne::updateBound(), and varIndex_.

virtual int Couenne::exprVar::rank (  )  [inline, virtual]

rank of an original variable is always one

Reimplemented from Couenne::expression.

Reimplemented in Couenne::exprAux.

Definition at line 179 of file CouenneExprVar.hpp.

void exprVar::fillDepSet ( std::set< DepNode *, compNode > *  ,
DepGraph  
) [virtual]

update dependence set with index of this variable

Reimplemented from Couenne::expression.

Definition at line 61 of file exprVar.cpp.

References g, and varIndex_.

virtual bool Couenne::exprVar::isFixed (  )  [inline, virtual]

is this variable fixed?

Definition at line 186 of file CouenneExprVar.hpp.

References COUENNE_EPS, lb(), and ub().

virtual void Couenne::exprVar::linkDomain ( Domain d  )  [inline, virtual]

link this variable to a domain

Reimplemented from Couenne::expression.

Reimplemented in Couenne::exprAux.

Definition at line 190 of file CouenneExprVar.hpp.

References domain_.

virtual Domain* Couenne::exprVar::domain (  )  [inline, virtual]

return pointer to variable domain

Definition at line 194 of file CouenneExprVar.hpp.

References domain_.

virtual void Couenne::exprVar::decreaseMult (  )  [inline, virtual]

Reimplemented in Couenne::exprAux.

Definition at line 198 of file CouenneExprVar.hpp.

virtual void Couenne::exprVar::zeroMult (  )  [inline, virtual]

Disable variable (empty for compatibility with exprAux).

Reimplemented in Couenne::exprAux.

Definition at line 201 of file CouenneExprVar.hpp.

virtual void Couenne::exprVar::setInteger ( bool  value  )  [inline, virtual]

Set this variable as integer (empty for compatibility with exprAux).

Reimplemented in Couenne::exprAux.

Definition at line 204 of file CouenneExprVar.hpp.

virtual enum convexity Couenne::exprVar::convexity (  )  const [inline, virtual]

either CONVEX, CONCAVE, AFFINE, or NONCONVEX

Reimplemented from Couenne::expression.

Definition at line 207 of file CouenneExprVar.hpp.

References Couenne::AFFINE.

CouenneObject * exprVar::properObject ( CouenneCutGenerator c,
CouenneProblem p,
Bonmin::BabSetupBase base,
JnlstPtr  jnlst_ 
) [virtual]

return proper object to handle expression associated with this variable (NULL if this is not an auxiliary)

Reimplemented in Couenne::exprAux.

Definition at line 71 of file exprVar.cpp.

virtual enum auxSign Couenne::exprVar::sign (  )  const [inline, virtual]

return its sign in the definition constraint

Reimplemented in Couenne::exprAux.

Definition at line 218 of file CouenneExprVar.hpp.

References Couenne::expression::AUX_UNDEF.

Referenced by generateCuts().


Member Data Documentation

int Couenne::exprVar::varIndex_ [protected]

The index of the variable.

Definition at line 50 of file CouenneExprVar.hpp.

Referenced by Couenne::exprAux::DepList(), DepList(), differentiate(), Couenne::exprAux::exprAux(), fillDepSet(), generateCuts(), Couenne::exprAux::generateCuts(), getBounds(), impliedBound(), Index(), isInteger(), Lb(), lb(), operator()(), Couenne::exprUpperBound::operator()(), Couenne::exprLowerBound::operator()(), Couenne::exprAux::operator()(), Couenne::exprAux::print(), print(), Couenne::exprIVar::print(), Couenne::exprUpperBound::print(), Couenne::exprLowerBound::print(), Ub(), and ub().

Domain* Couenne::exprVar::domain_ [protected]

Pointer to a descriptor of the current point/bounds.

Definition at line 51 of file CouenneExprVar.hpp.

Referenced by domain(), Couenne::exprAux::exprAux(), Couenne::exprAux::generateCuts(), getBounds(), isInteger(), Lb(), lb(), linkDomain(), Couenne::exprAux::linkDomain(), operator()(), Couenne::exprUpperBound::operator()(), Couenne::exprLowerBound::operator()(), Couenne::exprAux::operator()(), Ub(), and ub().


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