MC++
McCormick Relaxation Arithmetic for Factorable Functions

Classes

struct  mc::McCormick< T >::Options
 Options of mc::McCormick. More...
 
class  mc::McCormick< T >::Exceptions
 Exceptions of mc::McCormick. More...
 

Functions

 mc::McCormick< T >::McCormick ()
 Default constructor (needed to declare arrays of McCormick class)
 
 mc::McCormick< T >::McCormick (const double c)
 Constructor for a constant value c
 
 mc::McCormick< T >::McCormick (const T &I)
 Constructor for an interval I.
 
 mc::McCormick< T >::McCormick (const T &I, const double c)
 Constructor for a variable, whose range is I and value is c
 
 mc::McCormick< T >::McCormick (const T &I, const double cv, const double cc)
 Constructor for a variable, whose range is I and convex and concave bounds are cv and cc
 
 mc::McCormick< T >::McCormick (const McCormick< T > &MC)
 Copy constructor.
 
template<typename U >
 mc::McCormick< T >::McCormick (const McCormick< U > &MC)
 Copy constructor doing type conversion for underlying interval.
 
 mc::McCormick< T >::~McCormick ()
 Destructor.
 
unsigned int & mc::McCormick< T >::nsub ()
 Number of subgradient components/directions.
 
T & mc::McCormick< T >::I ()
 Interval bounds.
 
double mc::McCormick< T >::l () const
 Lower bound.
 
double mc::McCormick< T >::u () const
 Upper bound.
 
double & mc::McCormick< T >::cv ()
 Convex bound.
 
double & mc::McCormick< T >::cc ()
 Concave bound.
 
double *& mc::McCormick< T >::cvsub ()
 Pointer to a subgradient of convex underestimator.
 
double *& mc::McCormick< T >::ccsub ()
 Pointer to a subgradient of concave overestimator.
 
double & mc::McCormick< T >::cvsub (const unsigned int i)
 ith component of a subgradient of convex underestimator
 
double & mc::McCormick< T >::ccsub (const unsigned int i)
 ith component of a subgradient of concave overestimator
 
void mc::McCormick< T >::I (const T &I)
 Set interval bounds.
 
void mc::McCormick< T >::cv (const double &cv)
 Set convex bound to cv
 
void mc::McCormick< T >::cc (const double &cc)
 Set concave bound to cc
 
void mc::McCormick< T >::c (const double &c)
 Set both convex and concave bounds to c
 
McCormick< T > & mc::McCormick< T >::sub (const unsigned int nsub)
 Set dimension of subgradient to nsub
 
McCormick< T > & mc::McCormick< T >::sub (const unsigned int nsub, const unsigned int isub)
 Set dimension of subgradient to nsub and variable index isub (starts at 0)
 
McCormick< T > & mc::McCormick< T >::sub (const unsigned int nsub, const double *cvsub, const double *ccsub)
 Set dimension of subgradient to nsub and subgradient values for the convex and concave relaxations to cvsub and ccsub
 
McCormick< T > & mc::McCormick< T >::cut ()
 Cut convex/concave relaxations at interval bound.
 
double mc::McCormick< T >::laff (const double *p, const double *pref) const
 Compute affine underestimator at p based on a subgradient value of the convex underestimator at pref
 
double mc::McCormick< T >::laff (const T *Ip, const double *pref) const
 Compute lower bound on range Ip based on an affine underestimator of the convex underestimator at pref
 
double mc::McCormick< T >::uaff (const double *p, const double *pref) const
 Compute affine overestimator at p based on a subgradient value of the concave overestimator at pref
 
double mc::McCormick< T >::uaff (const T *Ip, const double *pref) const
 Compute upper bound on range Ip based on an affine overestimator of the concave overestimator at pref
 

Detailed Description