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

Provides an interface for a convex combination of the expected value and the conditional value-at-risk using the expectation risk quadrangle. More...

#include <ROL_QuantileQuadrangle.hpp>

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

Public Member Functions

 QuantileQuadrangle (Real prob, Real eps, Teuchos::RCP< PlusFunction< Real > > &pf)
 Constructor. More...
 
 QuantileQuadrangle (Real prob, Real lam, Real eps, Teuchos::RCP< PlusFunction< Real > > &pf)
 Constructor. More...
 
 QuantileQuadrangle (Teuchos::ParameterList &parlist)
 Constructor. More...
 
Real error (Real x, int deriv=0)
 
Real regret (Real x, int deriv=0)
 Evaluate the scalar regret function at x. More...
 
void checkRegret (void)
 Run default derivative tests for the scalar regret function. More...
 
- Public Member Functions inherited from ROL::ExpectationQuad< Real >
 ExpectationQuad (void)
 
void reset (Teuchos::RCP< Vector< Real > > &x0, const Vector< Real > &x)
 Reset internal risk measure storage. Called for value and gradient computation. More...
 
void reset (Teuchos::RCP< Vector< Real > > &x0, const Vector< Real > &x, Teuchos::RCP< Vector< Real > > &v0, const Vector< Real > &v)
 Reset internal risk measure storage. Called for Hessian-times-a-vector computation. More...
 
void update (const Real val, const Real weight)
 Update internal risk measure storage for value computation. More...
 
void update (const Real val, const Vector< Real > &g, const Real weight)
 Update internal risk measure storage for gradient computation. More...
 
void update (const Real val, const Vector< Real > &g, const Real gv, const Vector< Real > &hv, const Real weight)
 Update internal risk measure storage for Hessian-time-a-vector computation. More...
 
Real getValue (SampleGenerator< Real > &sampler)
 Return risk measure value. More...
 
void getGradient (Vector< Real > &g, SampleGenerator< Real > &sampler)
 Return risk measure (sub)gradient. More...
 
void getHessVec (Vector< Real > &hv, SampleGenerator< Real > &sampler)
 Return risk measure Hessian-times-a-vector. More...
 
- Public Member Functions inherited from ROL::RiskMeasure< Real >
virtual ~RiskMeasure ()
 
 RiskMeasure (void)
 

Private Member Functions

void checkInputs (void) const
 
void setParameters (void)
 

Private Attributes

Teuchos::RCP< PlusFunction< Real > > pf_
 
Real prob_
 
Real lam_
 
Real eps_
 
Real alpha_
 
Real beta_
 

Additional Inherited Members

- Protected Attributes inherited from ROL::RiskMeasure< Real >
Real val_
 
Real gv_
 
Teuchos::RCP< Vector< Real > > g_
 
Teuchos::RCP< Vector< Real > > hv_
 
Teuchos::RCP< Vector< Real > > dualVector_
 
bool firstReset_
 

Detailed Description

template<class Real>
class ROL::QuantileQuadrangle< Real >

Provides an interface for a convex combination of the expected value and the conditional value-at-risk using the expectation risk quadrangle.

The conditional value-at-risk (also called the average value-at-risk or the expected shortfall) with confidence level \(0\le \beta < 1\) is

\[ \mathcal{R}(X) = \inf_{t\in\mathbb{R}} \left\{ t + \frac{1}{1-\beta} \mathbb{E}\left[(X-t)_+\right] \right\} \]

where \((x)_+ = \max\{0,x\}\). If the distribution of \(X\) is continuous, then \(\mathcal{R}\) is the conditional expectation of \(X\) exceeding the \(\beta\)-quantile of \(X\) and the optimal \(t\) is the \(\beta\)-quantile. Additionally, \(\mathcal{R}\) is a law-invariant coherent risk measure.

This class defines a convex combination of expected value and the conditional value-at-risk using the expectation risk quadrangle. In this case, the scalar regret function is

\[ v(x) = \alpha (x)_+ - \lambda (-x)_+ \]

for \(\alpha > 1\) and \(0 \le \lambda < 1\). The associated confidence level for the conditional value-at-risk is

\[ \beta = \frac{\alpha-1}{\alpha-\lambda}. \]

This convex combination of expected value and the conditional value-at-risk is then realized as

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

ROL implements this by augmenting the optimization vector \(x_0\) with the parameter \(t\), then minimizes jointly for \((x_0,t)\).

When using derivative-based optimization, the user can provide a smooth approximation of \((\cdot)_+\) using the ROL::PlusFunction class.

Definition at line 97 of file ROL_QuantileQuadrangle.hpp.

Constructor & Destructor Documentation

◆ QuantileQuadrangle() [1/3]

template<class Real >
ROL::QuantileQuadrangle< Real >::QuantileQuadrangle ( Real  prob,
Real  eps,
Teuchos::RCP< PlusFunction< Real > > &  pf 
)
inline

Constructor.

Parameters
[in]probis the confidence level
[in]epsis the smoothing parameter for the plus function approximation
[in]pfis the plus function or an approximation

Definition at line 134 of file ROL_QuantileQuadrangle.hpp.

References ROL::QuantileQuadrangle< Real >::checkInputs(), and ROL::QuantileQuadrangle< Real >::setParameters().

◆ QuantileQuadrangle() [2/3]

template<class Real >
ROL::QuantileQuadrangle< Real >::QuantileQuadrangle ( Real  prob,
Real  lam,
Real  eps,
Teuchos::RCP< PlusFunction< Real > > &  pf 
)
inline

Constructor.

Parameters
[in]probis the confidence level
[in]lamis the convex combination parameter (coeff=0 corresponds to the expected value whereas coeff=1 corresponds to the conditional value-at-risk)
[in]epsis the smoothing parameter for the plus function approximation
[in]pfis the plus function or an approximation

Definition at line 149 of file ROL_QuantileQuadrangle.hpp.

References ROL::QuantileQuadrangle< Real >::checkInputs(), and ROL::QuantileQuadrangle< Real >::setParameters().

◆ QuantileQuadrangle() [3/3]

template<class Real >
ROL::QuantileQuadrangle< Real >::QuantileQuadrangle ( Teuchos::ParameterList &  parlist)
inline

Constructor.

Parameters
[in]parlistis a parameter list specifying inputs

parlist should contain sublists "SOL"->"Risk Measure"->"CVaR" and within the "CVaR" sublist should have the following parameters

  • "Confidence Level" (between 0 and 1)
  • "Convex Combination Parameter" (between 0 and 1)
  • "Smoothing Parameter" (must be positive)
  • A sublist for plus function information.

Definition at line 167 of file ROL_QuantileQuadrangle.hpp.

References ROL::QuantileQuadrangle< Real >::checkInputs(), ROL::QuantileQuadrangle< Real >::eps_, ROL::QuantileQuadrangle< Real >::lam_, ROL::QuantileQuadrangle< Real >::pf_, ROL::QuantileQuadrangle< Real >::prob_, and ROL::QuantileQuadrangle< Real >::setParameters().

Member Function Documentation

◆ checkInputs()

template<class Real >
void ROL::QuantileQuadrangle< Real >::checkInputs ( void  ) const
inlineprivate

◆ setParameters()

template<class Real >
void ROL::QuantileQuadrangle< Real >::setParameters ( void  )
inlineprivate

◆ error()

template<class Real >
Real ROL::QuantileQuadrangle< Real >::error ( Real  x,
int  deriv = 0 
)
inline

◆ regret()

template<class Real >
Real ROL::QuantileQuadrangle< Real >::regret ( Real  x,
int  deriv = 0 
)
inlinevirtual

Evaluate the scalar regret function at x.

Parameters
[in]xis the scalar input
[in]derivis the derivative order

This function returns \(v(x)\) or a derivative of \(v(x)\).

Implements ROL::ExpectationQuad< Real >.

Definition at line 188 of file ROL_QuantileQuadrangle.hpp.

References ROL::QuantileQuadrangle< Real >::error().

Referenced by ROL::QuantileQuadrangle< Real >::checkRegret().

◆ checkRegret()

template<class Real >
void ROL::QuantileQuadrangle< Real >::checkRegret ( void  )
inlinevirtual

Run default derivative tests for the scalar regret function.

Reimplemented from ROL::ExpectationQuad< Real >.

Definition at line 195 of file ROL_QuantileQuadrangle.hpp.

References ROL::ExpectationQuad< Real >::checkRegret(), ROL::QuantileQuadrangle< Real >::eps_, and ROL::QuantileQuadrangle< Real >::regret().

Member Data Documentation

◆ pf_

template<class Real >
Teuchos::RCP<PlusFunction<Real> > ROL::QuantileQuadrangle< Real >::pf_
private

◆ prob_

template<class Real >
Real ROL::QuantileQuadrangle< Real >::prob_
private

◆ lam_

template<class Real >
Real ROL::QuantileQuadrangle< Real >::lam_
private

◆ eps_

template<class Real >
Real ROL::QuantileQuadrangle< Real >::eps_
private

◆ alpha_

template<class Real >
Real ROL::QuantileQuadrangle< Real >::alpha_
private

◆ beta_

template<class Real >
Real ROL::QuantileQuadrangle< Real >::beta_
private

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