44 #ifndef ROL_SMOOTHCVARQUAD_HPP 45 #define ROL_SMOOTHCVARQUAD_HPP 56 Teuchos::RCP<PlusFunction<Real> >
pf_;
65 prob_ = ((prob >= 0.0) ? ((prob <= 1.0) ? prob : 0.5) : 0.5);
66 eps_ = ((eps > 0.0) ? eps : 1.0);
70 Teuchos::ParameterList& list
71 = parlist.sublist(
"SOL").sublist(
"Risk Measure").sublist(
"Quantile-Based Quadrangle");
73 Real prob = list.get(
"Confidence Level",0.5);
74 prob_ = ((prob >= 0.0) ? ((prob <= 1.0) ? prob : 0.5) : 0.5);
77 Real eps = list.get(
"Smoothing Parameter",1.);
78 eps_ = ((eps > 0.) ? eps : 1.);
81 Real
error(Real x,
int deriv = 0) {
82 Real err = (prob_/(1.0-
prob_))*pf_->evaluate(x,deriv)
83 + ((deriv%2) ? -1.0 : 1.0)*pf_->evaluate(-x,deriv);
88 Real X = ((deriv==0) ? x : ((deriv==1) ? 1.0 : 0.0));
89 Real reg =
error(x,deriv) + X;
97 Real vx = 0.0, vy = 0.0;
102 std::cout << std::right << std::setw(20) <<
"CHECK REGRET: v'(eps) is correct? \n";
103 std::cout << std::right << std::setw(20) <<
"t" 104 << std::setw(20) <<
"v'(x)" 105 << std::setw(20) <<
"(v(x+t)-v(x-t))/2t" 106 << std::setw(20) <<
"Error" 108 for (
int i = 0; i < 13; i++) {
111 diff = (vy-vx)/(2.0*t);
112 err = std::abs(diff-dv);
113 std::cout << std::scientific << std::setprecision(11) << std::right
114 << std::setw(20) << t
115 << std::setw(20) << dv
116 << std::setw(20) << diff
117 << std::setw(20) << err
129 std::cout << std::right << std::setw(20) <<
"CHECK REGRET: v''(eps) is correct? \n";
130 std::cout << std::right << std::setw(20) <<
"t" 131 << std::setw(20) <<
"v''(x)" 132 << std::setw(20) <<
"(v'(x+t)-v'(x-t))/2t" 133 << std::setw(20) <<
"Error" 135 for (
int i = 0; i < 13; i++) {
138 diff = (vy-vx)/(2.0*t);
139 err = std::abs(diff-dv);
140 std::cout << std::scientific << std::setprecision(11) << std::right
141 << std::setw(20) << t
142 << std::setw(20) << dv
143 << std::setw(20) << diff
144 << std::setw(20) << err
157 std::cout << std::right << std::setw(20) <<
"CHECK REGRET: v'(0) is correct? \n";
158 std::cout << std::right << std::setw(20) <<
"t" 159 << std::setw(20) <<
"v'(x)" 160 << std::setw(20) <<
"(v(x+t)-v(x-t))/2t" 161 << std::setw(20) <<
"Error" 163 for (
int i = 0; i < 13; i++) {
166 diff = (vy-vx)/(2.0*t);
167 err = std::abs(diff-dv);
168 std::cout << std::scientific << std::setprecision(11) << std::right
169 << std::setw(20) << t
170 << std::setw(20) << dv
171 << std::setw(20) << diff
172 << std::setw(20) << err
184 std::cout << std::right << std::setw(20) <<
"CHECK REGRET: v''(0) is correct? \n";
185 std::cout << std::right << std::setw(20) <<
"t" 186 << std::setw(20) <<
"v''(x)" 187 << std::setw(20) <<
"(v'(x+t)-v'(x-t))/2t" 188 << std::setw(20) <<
"Error" 190 for (
int i = 0; i < 13; i++) {
193 diff = (vy-vx)/(2.0*t);
194 err = std::abs(diff-dv);
195 std::cout << std::scientific << std::setprecision(11) << std::right
196 << std::setw(20) << t
197 << std::setw(20) << dv
198 << std::setw(20) << diff
199 << std::setw(20) << err
212 std::cout << std::right << std::setw(20) <<
"CHECK REGRET: v'(-eps) is correct? \n";
213 std::cout << std::right << std::setw(20) <<
"t" 214 << std::setw(20) <<
"v'(x)" 215 << std::setw(20) <<
"(v(x+t)-v(x-t))/2t" 216 << std::setw(20) <<
"Error" 218 for (
int i = 0; i < 13; i++) {
221 diff = (vy-vx)/(2.0*t);
222 err = std::abs(diff-dv);
223 std::cout << std::scientific << std::setprecision(11) << std::right
224 << std::setw(20) << t
225 << std::setw(20) << dv
226 << std::setw(20) << diff
227 << std::setw(20) << err
239 std::cout << std::right << std::setw(20) <<
"CHECK REGRET: v''(-eps) is correct? \n";
240 std::cout << std::right << std::setw(20) <<
"t" 241 << std::setw(20) <<
"v''(x)" 242 << std::setw(20) <<
"(v'(x+t)-v'(x-t))/2t" 243 << std::setw(20) <<
"Error" 245 for (
int i = 0; i < 13; i++) {
248 diff = (vy-vx)/(2.0*t);
249 err = std::abs(diff-dv);
250 std::cout << std::scientific << std::setprecision(11) << std::right
251 << std::setw(20) << t
252 << std::setw(20) << dv
253 << std::setw(20) << diff
254 << std::setw(20) << err
QuantileQuadrangle(Teuchos::ParameterList &parlist)
virtual void checkRegret(void)
Real regret(Real x, int deriv=0)
Real error(Real x, int deriv=0)
Teuchos::RCP< PlusFunction< Real > > pf_
QuantileQuadrangle(Real prob, Real eps, Teuchos::RCP< PlusFunction< Real > > &pf)