Couenne::exprSum Class Reference

class sum, $ \sum_{i=1}^n f_i(x) $ More...

#include <CouenneExprSum.hpp>

Inheritance diagram for Couenne::exprSum:
Couenne::exprOp Couenne::expression Couenne::exprGroup Couenne::exprQuad

List of all members.

Public Member Functions

 exprSum (expression **=NULL, int=0)
 Constructors, destructor.
 exprSum (expression *, expression *)
 Constructor with two elements.
virtual ~exprSum ()
 Empty destructor.
virtual expressionclone (Domain *d=NULL) const
 Cloning method.
std::string printOp () const
 Print operator.
virtual CouNumber operator() ()
 Function for the evaluation of the expression.
virtual expressiondifferentiate (int index)
 Differentiation.
virtual expressionsimplify ()
 Simplification.
virtual int Linearity ()
 Get a measure of "how linear" the expression is:.
virtual void getBounds (expression *&, expression *&)
 Get lower and upper bound of an expression (if any).
virtual void getBounds (CouNumber &, CouNumber &)
 Get 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 *, OsiCuts &, const CouenneCutGenerator *, t_chg_bounds *=NULL, int=-1, CouNumber=-COUENNE_INFINITY, CouNumber=COUENNE_INFINITY)
 Special version for linear constraints.
virtual enum expr_type code ()
 Code for comparison.
virtual bool impliedBound (int, CouNumber *, CouNumber *, t_chg_bounds *, enum auxSign=expression::AUX_EQ)
 Implied bound.
exprAuxcreateQuadratic (CouenneProblem *)
 Checks for quadratic terms in the expression and returns an exprQuad if there are enough to create something that can be convexified.

Protected Member Functions

int impliedBoundSum (CouNumber wl, CouNumber wu, std::vector< CouNumber > &xl, std::vector< CouNumber > &xu, std::vector< std::pair< int, CouNumber > > &nl, std::vector< std::pair< int, CouNumber > > &nu)
 inferring bounds on factors of a product

Detailed Description

class sum, $ \sum_{i=1}^n f_i(x) $

Definition at line 22 of file CouenneExprSum.hpp.


Constructor & Destructor Documentation

Couenne::exprSum::exprSum ( expression **  = NULL,
int  = 0 
)

Constructors, destructor.

Referenced by clone().

Couenne::exprSum::exprSum ( expression ,
expression  
)

Constructor with two elements.

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

Empty destructor.

Definition at line 33 of file CouenneExprSum.hpp.


Member Function Documentation

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

Cloning method.

Reimplemented from Couenne::expression.

Reimplemented in Couenne::exprGroup, and Couenne::exprQuad.

Definition at line 36 of file CouenneExprSum.hpp.

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

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

Print operator.

Reimplemented from Couenne::exprOp.

Definition at line 40 of file CouenneExprSum.hpp.

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

Function for the evaluation of the expression.

compute sum

Implements Couenne::expression.

Reimplemented in Couenne::exprGroup, and Couenne::exprQuad.

Definition at line 118 of file CouenneExprSum.hpp.

References Couenne::exprOp::arglist_, and Couenne::exprOp::nargs_.

virtual expression* Couenne::exprSum::differentiate ( int  index  )  [virtual]

Differentiation.

Reimplemented from Couenne::expression.

Reimplemented in Couenne::exprGroup, and Couenne::exprQuad.

virtual expression* Couenne::exprSum::simplify (  )  [virtual]

Simplification.

Reimplemented from Couenne::exprOp.

Reimplemented in Couenne::exprGroup, and Couenne::exprQuad.

virtual int Couenne::exprSum::Linearity (  )  [virtual]

Get a measure of "how linear" the expression is:.

Reimplemented from Couenne::exprOp.

Reimplemented in Couenne::exprGroup, and Couenne::exprQuad.

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

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

Reimplemented in Couenne::exprGroup, and Couenne::exprQuad.

virtual void Couenne::exprSum::getBounds ( CouNumber ,
CouNumber  
) [virtual]

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

Reimplemented from Couenne::expression.

Reimplemented in Couenne::exprGroup, and Couenne::exprQuad.

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

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

Reimplemented from Couenne::exprOp.

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

Special version for linear constraints.

Reimplemented in Couenne::exprGroup, and Couenne::exprQuad.

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

Code for comparison.

Reimplemented from Couenne::exprOp.

Reimplemented in Couenne::exprGroup, and Couenne::exprQuad.

Definition at line 73 of file CouenneExprSum.hpp.

References Couenne::COU_EXPRSUM.

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

Implied bound.

An expression

$w = a0 + \sum_{i\in I1} a_i x_i + \sum_{i\in I2} a_i x_i$

is given such that all $a_i$ are positive for $i \in I1$ and negative for $i \in I2$. If the bounds on $w \in [l,u]$, implied bounds on all $x_i, i\in I1 \cup I2$ are as follows:

$\forall i\in I1$ $x_i \ge (l - a0 - \sum_{j\in I1 | j\neq i} a_j u_j - \sum_{j\in I2} a_j l_j) / a_i$ $x_i \le (u - a0 - \sum_{j\in I1 | j\neq i} a_j l_j - \sum_{j\in I2} a_j u_j) / a_i$

$\forall i\in I2$ $x_i \ge (u - a0 - \sum_{j\in I1} a_j u_j - \sum_{j\in I2 | j\neq i} a_j l_j) / a_i$ $x_i \le (l - a0 - \sum_{j\in I1} a_j l_j - \sum_{j\in I2 | j\neq i} a_j u_j) / a_i$,

where $l_i$ and $u_i$ are lower and upper bound, respectively, of $x_i$. We also have to check if some of these bounds are infinite.

Reimplemented from Couenne::expression.

Reimplemented in Couenne::exprQuad.

exprAux* Couenne::exprSum::createQuadratic ( CouenneProblem  ) 

Checks for quadratic terms in the expression and returns an exprQuad if there are enough to create something that can be convexified.

int Couenne::exprSum::impliedBoundSum ( CouNumber  wl,
CouNumber  wu,
std::vector< CouNumber > &  xl,
std::vector< CouNumber > &  xu,
std::vector< std::pair< int, CouNumber > > &  nl,
std::vector< std::pair< int, CouNumber > > &  nu 
) [protected]

inferring bounds on factors of a product


The documentation for this class was generated from the following file:
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Defines

Generated on 23 Jan 2015 for Couenne by  doxygen 1.6.1