44 #ifndef ROL_QUANTILERADIUSQUADRANGLE_HPP 45 #define ROL_QUANTILERADIUSQUADRANGLE_HPP 51 #include "Teuchos_Array.hpp" 52 #include "Teuchos_ParameterList.hpp" 76 Teuchos::ParameterList &list
77 = parlist.sublist(
"SOL").sublist(
"Risk Measure").sublist(
"Quantile-Radius Quadrangle");
79 prob_ = list.get(
"Confidence Level",0.5);
80 coeff_ = list.get(
"Coefficient",1.0);
82 TEUCHOS_TEST_FOR_EXCEPTION((prob_>1. || prob_<0.), std::invalid_argument,
83 ">>> ERROR (ROL::QuantileRadiusQuadrangle): Confidence level out of range!");
84 TEUCHOS_TEST_FOR_EXCEPTION((coeff_<0.), std::invalid_argument,
85 ">>> ERROR (ROL::QuantileRadiusQuadrangle): Coefficient is negative!");
89 xvar_.clear(); xvar_.resize(2,0.0);
90 vvar_.clear(); vvar_.resize(2,0.0);
91 vec_.clear(); vec_.resize(2,0.0);
96 for (
int i = 0; i < 2; i++) {
102 dualVector_ = (x0->dual()).clone();
113 for (
int i = 0; i < 2; i++) {
119 void update(
const Real val,
const Real weight) {
120 Real pf1 = plusFunction_->evaluate(val-xvar_[0],0);
121 Real pf2 = plusFunction_->evaluate(-val-xvar_[1],0);
126 Real pf1 = plusFunction_->evaluate(val-xvar_[0],1);
127 Real pf2 = plusFunction_->evaluate(-val-xvar_[1],1);
128 Real c = 0.5*weight*coeff_/(1.0-
prob_);
136 Real pf11 = plusFunction_->evaluate(val-xvar_[0],1);
137 Real pf12 = plusFunction_->evaluate(val-xvar_[0],2);
138 Real pf21 = plusFunction_->evaluate(-val-xvar_[1],1);
139 Real pf22 = plusFunction_->evaluate(-val-xvar_[1],2);
140 Real c = 0.5*weight*coeff_/(1.0-
prob_);
141 vec_[0] -= c*pf12*(gv-vvar_[0]);
142 vec_[1] -= c*pf22*(-gv-vvar_[1]);
150 sampler.
sumAll(&val,&cvar,1);
151 cvar += 0.5*coeff_*(xvar_[0] + xvar_[1]);
157 std::vector<Real> var(2,0.0);
158 sampler.
sumAll(&vec_[0],&var[0],2);
169 std::vector<Real> var(2,0.0);
170 sampler.
sumAll(&vec_[0],&var[0],2);
void update(const Real val, const Vector< Real > &g, const Real gv, const Vector< Real > &hv, const Real weight)
Real getValue(SampleGenerator< Real > &sampler)
void reset(Teuchos::RCP< Vector< Real > > &x0, const Vector< Real > &x, Teuchos::RCP< Vector< Real > > &v0, const Vector< Real > &v)
const Real getStatistic(const int i=0) const
void getHessVec(Vector< Real > &hv, SampleGenerator< Real > &sampler)
Defines the linear algebra or vector space interface.
void sumAll(Real *input, Real *output, int dim) const
void setVector(const Vector< Real > &vec)
Teuchos::RCP< const Vector< Real > > getVector() const
void update(const Real val, const Vector< Real > &g, const Real weight)
std::vector< Real > xvar_
Teuchos::RCP< Vector< Real > > dualVector_
void setStatistic(const Real stat)
void getGradient(Vector< Real > &g, SampleGenerator< Real > &sampler)
void reset(Teuchos::RCP< Vector< Real > > &x0, const Vector< Real > &x)
void update(const Real val, const Real weight)
std::vector< Real > vvar_
virtual void reset(Teuchos::RCP< Vector< Real > > &x0, const Vector< Real > &x)
Teuchos::RCP< PlusFunction< Real > > plusFunction_
QuantileRadiusQuadrangle(Teuchos::ParameterList &parlist)