# Couenne::exprVar Class Reference

variable-type operator More...

`#include <CouenneExprVar.hpp>`

Inheritance diagram for Couenne::exprVar:

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 exprVar * | clone (Domain *d=NULL) const
| Cloning method.
int | Index () const
| Get variable index in problem.
virtual expression * | Lb ()
| Get lower bound expression.
virtual expression * | Ub ()
| Get upper bound expression.
virtual CouNumber & | lb ()
| Get/set lower bound value.
virtual CouNumber & | ub ()
| 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 expression * | differentiate (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 expression * | simplify ()
| 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)
| Get values of lower and upper bound of an expression (if any).
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 Domain * | domain ()
| 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 CouenneObject * | properObject (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.
Domain * | domain_
| 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 45 of file CouenneExprVar.hpp.

## Constructor & Destructor Documentation

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

Constructor.

Definition at line 59 of file CouenneExprVar.hpp.

Referenced by clone().

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

destructor

Definition at line 64 of file CouenneExprVar.hpp.

Couenne::exprVar::exprVar | ( | const exprVar & | e,
|  | Domain * | d = `NULL` |
| ) |  |  | `[inline]`

Copy constructor.

Definition at line 67 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 55 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 72 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 76 of file CouenneExprVar.hpp.

References varIndex_.

virtual expression* Couenne::exprVar::Lb | ( |  | ) | `[virtual]`

Get lower bound expression.

Reimplemented in Couenne::exprAux.

virtual expression* Couenne::exprVar::Ub | ( |  | ) | `[virtual]`

Get upper bound expression.

Reimplemented in Couenne::exprAux.

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

Get/set lower bound value.

Definition at line 84 of file CouenneExprVar.hpp.

References domain_, lb(), and varIndex_.

Referenced by isFixed(), isInteger(), Couenne::exprAux::isInteger(), lb(), and Couenne::exprLowerBound::operator()().

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

Get/set upper bound value.

Definition at line 85 of file CouenneExprVar.hpp.

References domain_, ub(), and varIndex_.

Referenced by isFixed(), isInteger(), Couenne::exprAux::isInteger(), Couenne::exprUpperBound::operator()(), and ub().

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 88 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 93 of file CouenneExprVar.hpp.

References domain_, and varIndex_.

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 97 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 101 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 106 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 118 of file CouenneExprVar.hpp.

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

simplify

Reimplemented from Couenne::expression.

Reimplemented in Couenne::exprAux.

Definition at line 121 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 125 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 129 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 133 of file CouenneExprVar.hpp.

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

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

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

virtual void Couenne::exprVar::getBounds | ( | CouNumber & | lb,
|  | CouNumber & | ub |
| ) |  |  | `[virtual]`

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

Reimplemented from Couenne::expression.

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

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

generate cuts for expression associated with this auxiliary

Reimplemented in Couenne::exprAux.

Definition at line 156 of file CouenneExprVar.hpp.

virtual void Couenne::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

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 171 of file CouenneExprVar.hpp.

References Couenne::COU_EXPRVAR.

virtual bool Couenne::exprVar::impliedBound | ( | int | ,
|  | CouNumber * | ,
|  | CouNumber * | ,
|  | t_chg_bounds * | ,
|  | enum | auxSign = `expression::AUX_EQ` |
| ) |  |  | `[virtual]`

implied bound processing

Reimplemented from Couenne::expression.

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 178 of file CouenneExprVar.hpp.

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

update dependence set with index of this variable

Reimplemented from Couenne::expression.

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

is this variable fixed?

Definition at line 185 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 189 of file CouenneExprVar.hpp.

References domain_.

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

return pointer to variable domain

Definition at line 193 of file CouenneExprVar.hpp.

References domain_.

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

Reimplemented in Couenne::exprAux.

Definition at line 197 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 200 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 203 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 206 of file CouenneExprVar.hpp.

References Couenne::AFFINE.

virtual CouenneObject* Couenne::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.

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

return its sign in the definition constraint

Reimplemented in Couenne::exprAux.

Definition at line 217 of file CouenneExprVar.hpp.

References Couenne::expression::AUX_UNDEF.

## Member Data Documentation

int Couenne::exprVar::varIndex_`[protected]`

The index of the variable.

Definition at line 49 of file CouenneExprVar.hpp.

Referenced by DepList(), differentiate(), Index(), isInteger(), lb(), operator()(), Couenne::exprUpperBound::operator()(), Couenne::exprLowerBound::operator()(), Couenne::exprAux::operator()(), print(), Couenne::exprIVar::print(), Couenne::exprUpperBound::print(), Couenne::exprLowerBound::print(), and ub().

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

Pointer to a descriptor of the current point/bounds.

Definition at line 50 of file CouenneExprVar.hpp.

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

The documentation for this class was generated from the following file:

- CouenneExprVar.hpp

All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Defines