ROL
Public Member Functions | Private Attributes | List of all members
ROL::ExpectationQuadRegret< Real > Class Template Reference

Provides a general interface for regret measures generated through the expectation risk quadrangle. More...

#include <ROL_ExpectationQuadRegret.hpp>

+ Inheritance diagram for ROL::ExpectationQuadRegret< Real >:

Public Member Functions

 ExpectationQuadRegret (const Ptr< ExpectationQuad< Real >> &eq)
 
void checkRegret (void)
 Run derivative tests for the scalar regret function. More...
 
void updateValue (Objective< Real > &obj, const Vector< Real > &x, const std::vector< Real > &xstat, Real &tol)
 Update internal storage for value computation. More...
 
void updateGradient (Objective< Real > &obj, const Vector< Real > &x, const std::vector< Real > &xstat, Real &tol)
 Update internal risk measure storage for gradient computation. More...
 
void updateHessVec (Objective< Real > &obj, const Vector< Real > &v, const std::vector< Real > &vstat, const Vector< Real > &x, const std::vector< Real > &xstat, Real &tol)
 Update internal risk measure storage for Hessian-time-a-vector computation. More...
 
Real getValue (const Vector< Real > &x, const std::vector< Real > &xstat, SampleGenerator< Real > &sampler)
 Return risk measure value. More...
 
void getGradient (Vector< Real > &g, std::vector< Real > &gstat, const Vector< Real > &x, const std::vector< Real > &xstat, SampleGenerator< Real > &sampler)
 Return risk measure (sub)gradient. More...
 
void getHessVec (Vector< Real > &hv, std::vector< Real > &hvstat, const Vector< Real > &v, const std::vector< Real > &vstat, const Vector< Real > &x, const std::vector< Real > &xstat, SampleGenerator< Real > &sampler)
 Return risk measure Hessian-times-a-vector. More...
 
- Public Member Functions inherited from ROL::RandVarFunctional< Real >
virtual ~RandVarFunctional ()
 
 RandVarFunctional (void)
 
 weight_ (0)
 
void useStorage (bool storage)
 
void useHessVecStorage (bool storage)
 
virtual void setStorage (const Ptr< ScalarController< Real >> &value_storage, const Ptr< VectorController< Real >> &gradient_storage)
 
virtual void setHessVecStorage (const Ptr< ScalarController< Real >> &gradvec_storage, const Ptr< VectorController< Real >> &hessvec_storage)
 
virtual void resetStorage (bool flag=true)
 Reset internal storage. More...
 
virtual void resetStorage (UpdateType type)
 
virtual void initialize (const Vector< Real > &x)
 Initialize temporary variables. More...
 
virtual void setSample (const std::vector< Real > &point, const Real weight)
 
virtual Real computeStatistic (const Ptr< const std::vector< Real >> &xstat) const
 Compute statistic. More...
 

Private Attributes

Ptr< ExpectationQuad< Real > > eq_
 

Additional Inherited Members

- Protected Member Functions inherited from ROL::RandVarFunctional< Real >
Real computeValue (Objective< Real > &obj, const Vector< Real > &x, Real &tol)
 
void computeGradient (Vector< Real > &g, Objective< Real > &obj, const Vector< Real > &x, Real &tol)
 
Real computeGradVec (Vector< Real > &g, Objective< Real > &obj, const Vector< Real > &v, const Vector< Real > &x, Real &tol)
 
void computeHessVec (Vector< Real > &hv, Objective< Real > &obj, const Vector< Real > &v, const Vector< Real > &x, Real &tol)
 
- Protected Attributes inherited from ROL::RandVarFunctional< Real >
Real val_
 
Real gv_
 
Ptr< Vector< Real > > g_
 
Ptr< Vector< Real > > hv_
 
Ptr< Vector< Real > > dualVector_
 
bool firstReset_
 
std::vector< Real > point_
 
Real weight_
 

Detailed Description

template<class Real>
class ROL::ExpectationQuadRegret< Real >

Provides a general interface for regret measures generated through the expectation risk quadrangle.

The expectation risk quadrangle is a specialization of the general risk quadrangle that provides a rigorous connection between risk-averse optimization and statistical estimation. The risk quadrangle provides fundamental relationships between measures of risk, regret, error and deviation. An expectation risk quadrangle is defined through scalar regret and error functions. The scalar regret function, \(v:\mathbb{R}\to(-\infty,\infty]\), must be proper, closed, convex and satisfy \(v(0)=0\) and \(v(x) > x\) for all \(x\neq 0\). Similarly, the scalar error function, \(e:\mathbb{R}\to[0,\infty]\), must be proper, closed, convex and satisfy \(e(0)=0\) and \(e(x) > 0\) for all \(x\neq 0\). \(v\) and \(e\) are obtained from one another through the relations

\[ v(x) = e(x) + x \quad\text{and}\quad e(x) = v(x) - x. \]

Given \(v\) (or equivalently \(e\)), the associated risk measure is

\[ \mathcal{R}(X) = \inf_{t\in\mathbb{R}} \left\{ t + \mathbb{E}\left[v(X-t)\right] \right\}. \]

In general, \(\mathcal{R}\) is convex and translation equivariant. Moreover, \(\mathcal{R}\) is monotonic if \(v\) is increasing and \(\mathcal{R}\) is positive homogeneous if \(v\) is. ROL implements this by augmenting the optimization vector \(x_0\) with the parameter \(t\), then minimizes jointly for \((x_0,t)\).

Definition at line 55 of file ROL_ExpectationQuadRegret.hpp.

Constructor & Destructor Documentation

template<class Real >
ROL::ExpectationQuadRegret< Real >::ExpectationQuadRegret ( const Ptr< ExpectationQuad< Real >> &  eq)
inline

Definition at line 74 of file ROL_ExpectationQuadRegret.hpp.

Member Function Documentation

template<class Real >
void ROL::ExpectationQuadRegret< Real >::checkRegret ( void  )
inline

Run derivative tests for the scalar regret function.

Definition at line 79 of file ROL_ExpectationQuadRegret.hpp.

References ROL::ExpectationQuadRegret< Real >::eq_.

template<class Real >
void ROL::ExpectationQuadRegret< Real >::updateValue ( Objective< Real > &  obj,
const Vector< Real > &  x,
const std::vector< Real > &  xstat,
Real &  tol 
)
inlinevirtual

Update internal storage for value computation.

Parameters
[in]valis the value of the random variable objective function at the current sample point
[in]weightis the weight associated with the current sample point

Reimplemented from ROL::RandVarFunctional< Real >.

Definition at line 83 of file ROL_ExpectationQuadRegret.hpp.

References ROL::RandVarFunctional< Real >::computeValue(), ROL::ExpectationQuadRegret< Real >::eq_, ROL::RandVarFunctional< Real >::val_, and ROL::RandVarFunctional< Real >::weight_.

template<class Real >
void ROL::ExpectationQuadRegret< Real >::updateGradient ( Objective< Real > &  obj,
const Vector< Real > &  x,
const std::vector< Real > &  xstat,
Real &  tol 
)
inlinevirtual

Update internal risk measure storage for gradient computation.

Parameters
[in]valis the value of the random variable objective function at the current sample point
[in]gis the gradient of the random variable objective function at the current sample point
[in]weightis the weight associated with the current sample point

Reimplemented from ROL::RandVarFunctional< Real >.

Definition at line 91 of file ROL_ExpectationQuadRegret.hpp.

References ROL::RandVarFunctional< Real >::computeGradient(), ROL::RandVarFunctional< Real >::computeValue(), ROL::RandVarFunctional< Real >::dualVector_, ROL::ExpectationQuadRegret< Real >::eq_, ROL::RandVarFunctional< Real >::g_, and ROL::RandVarFunctional< Real >::weight_.

template<class Real >
void ROL::ExpectationQuadRegret< Real >::updateHessVec ( Objective< Real > &  obj,
const Vector< Real > &  v,
const std::vector< Real > &  vstat,
const Vector< Real > &  x,
const std::vector< Real > &  xstat,
Real &  tol 
)
inlinevirtual

Update internal risk measure storage for Hessian-time-a-vector computation.

Parameters
[in]valis the value of the random variable objective function at the current sample point
[in]gis the gradient of the random variable objective function at the current sample point
[in]gvis the gradient of the random variable objective function at the current sample point applied to the vector v0
[in]hvis the Hessian of the random variable objective function at the current sample point applied to the vector v0
[in]weightis the weight associated with the current sample point

Reimplemented from ROL::RandVarFunctional< Real >.

Definition at line 103 of file ROL_ExpectationQuadRegret.hpp.

References ROL::RandVarFunctional< Real >::computeGradVec(), ROL::RandVarFunctional< Real >::computeHessVec(), ROL::RandVarFunctional< Real >::computeValue(), ROL::RandVarFunctional< Real >::dualVector_, ROL::ExpectationQuadRegret< Real >::eq_, ROL::RandVarFunctional< Real >::hv_, and ROL::RandVarFunctional< Real >::weight_.

template<class Real >
Real ROL::ExpectationQuadRegret< Real >::getValue ( const Vector< Real > &  x,
const std::vector< Real > &  xstat,
SampleGenerator< Real > &  sampler 
)
inlinevirtual

Return risk measure value.

Parameters
[in]sampleris the ROL::SampleGenerator used to sample the objective function

Upon return, getValue returns \(\mathcal{R}(f(x_0))\) where \(f(x_0)\) denotes the random variable objective function evaluated at \(x_0\).

Reimplemented from ROL::RandVarFunctional< Real >.

Definition at line 122 of file ROL_ExpectationQuadRegret.hpp.

References ROL::SampleGenerator< Real >::sumAll(), and ROL::RandVarFunctional< Real >::val_.

template<class Real >
void ROL::ExpectationQuadRegret< Real >::getGradient ( Vector< Real > &  g,
std::vector< Real > &  gstat,
const Vector< Real > &  x,
const std::vector< Real > &  xstat,
SampleGenerator< Real > &  sampler 
)
inlinevirtual

Return risk measure (sub)gradient.

Parameters
[out]gis the (sub)gradient of the risk measure
[in]sampleris the ROL::SampleGenerator used to sample the objective function

Upon return, getGradient returns \(\theta\in\partial\mathcal{R}(f(x_0))\) where \(f(x_0)\) denotes the random variable objective function evaluated at \(x_0\) and \(\partial\mathcal{R}(X)\) denotes the subdifferential of \(\mathcal{R}\) at \(X\).

Reimplemented from ROL::RandVarFunctional< Real >.

Definition at line 130 of file ROL_ExpectationQuadRegret.hpp.

References ROL::RandVarFunctional< Real >::g_, and ROL::SampleGenerator< Real >::sumAll().

template<class Real >
void ROL::ExpectationQuadRegret< Real >::getHessVec ( Vector< Real > &  hv,
std::vector< Real > &  hvstat,
const Vector< Real > &  v,
const std::vector< Real > &  vstat,
const Vector< Real > &  x,
const std::vector< Real > &  xstat,
SampleGenerator< Real > &  sampler 
)
inlinevirtual

Return risk measure Hessian-times-a-vector.

Parameters
[out]hvis the Hessian-times-a-vector of the risk measure
[in]sampleris the ROL::SampleGenerator used to sample the objective function

Upon return, getHessVec returns \(\nabla^2 \mathcal{R}(f(x_0))v_0\) (if available) where \(f(x_0)\) denotes the random variable objective function evaluated at \(x_0\).

Reimplemented from ROL::RandVarFunctional< Real >.

Definition at line 138 of file ROL_ExpectationQuadRegret.hpp.

References ROL::RandVarFunctional< Real >::hv_, and ROL::SampleGenerator< Real >::sumAll().

Member Data Documentation

template<class Real >
Ptr<ExpectationQuad<Real> > ROL::ExpectationQuadRegret< Real >::eq_
private

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