44 #ifndef ROL_MOREAUYOSIDACVAR_HPP 45 #define ROL_MOREAUYOSIDACVAR_HPP 64 prob_ = ((prob >= 0.0) ? ((prob <= 1.0) ? prob : 0.5) : 0.5);
65 eps_ = ((eps > 0.0) ? eps : 1.0);
72 Teuchos::ParameterList& list
73 = parlist.sublist(
"SOL").sublist(
"Risk Measure").sublist(
"Moreau-Yosida CVaR");
75 Real prob = list.get(
"Confidence Level",0.5);
76 prob_ = ((prob >= 0.0) ? ((prob <= 1.0) ? prob : 0.5) : 0.5);
78 Real eps = list.get(
"Smoothing Parameter",1.);
79 eps_ = ((eps > 0.) ? eps : 1.);
85 Real
error(Real x,
int deriv = 0) {
86 Real X = ((deriv==0) ? x : ((deriv==1) ? 1.0 : 0.0));
87 return regret(x,deriv) - X;
91 int region = ((x <= 0) ? -1 : ((x >= ub_) ? 1 : 0));
94 reg = ((deriv == 0) ? 0.5*x*x : ((deriv == 1) ? x : 1.0));
97 else if ( region == 1 ) {
98 reg = ((deriv == 0) ? (x-0.5*ub_) : ((deriv == 1) ? 1.0 : 0.0));
108 Real vx = 0.0, vy = 0.0;
113 std::cout << std::right << std::setw(20) <<
"CHECK REGRET: v'(eps) is correct? \n";
114 std::cout << std::right << std::setw(20) <<
"t" 115 << std::setw(20) <<
"v'(x)" 116 << std::setw(20) <<
"(v(x+t)-v(x-t))/2t" 117 << std::setw(20) <<
"Error" 119 for (
int i = 0; i < 13; i++) {
122 diff = (vy-vx)/(2.0*t);
123 err = std::abs(diff-dv);
124 std::cout << std::scientific << std::setprecision(11) << std::right
125 << std::setw(20) << t
126 << std::setw(20) << dv
127 << std::setw(20) << diff
128 << std::setw(20) << err
140 std::cout << std::right << std::setw(20) <<
"CHECK REGRET: v''(eps) is correct? \n";
141 std::cout << std::right << std::setw(20) <<
"t" 142 << std::setw(20) <<
"v''(x)" 143 << std::setw(20) <<
"(v'(x+t)-v'(x-t))/2t" 144 << std::setw(20) <<
"Error" 146 for (
int i = 0; i < 13; i++) {
149 diff = (vy-vx)/(2.0*t);
150 err = std::abs(diff-dv);
151 std::cout << std::scientific << std::setprecision(11) << std::right
152 << std::setw(20) << t
153 << std::setw(20) << dv
154 << std::setw(20) << diff
155 << std::setw(20) << err
168 std::cout << std::right << std::setw(20) <<
"CHECK REGRET: v'(0) is correct? \n";
169 std::cout << std::right << std::setw(20) <<
"t" 170 << std::setw(20) <<
"v'(x)" 171 << std::setw(20) <<
"(v(x+t)-v(x-t))/2t" 172 << std::setw(20) <<
"Error" 174 for (
int i = 0; i < 13; i++) {
177 diff = (vy-vx)/(2.0*t);
178 err = std::abs(diff-dv);
179 std::cout << std::scientific << std::setprecision(11) << std::right
180 << std::setw(20) << t
181 << std::setw(20) << dv
182 << std::setw(20) << diff
183 << std::setw(20) << err
195 std::cout << std::right << std::setw(20) <<
"CHECK REGRET: v''(0) is correct? \n";
196 std::cout << std::right << std::setw(20) <<
"t" 197 << std::setw(20) <<
"v''(x)" 198 << std::setw(20) <<
"(v'(x+t)-v'(x-t))/2t" 199 << std::setw(20) <<
"Error" 201 for (
int i = 0; i < 13; i++) {
204 diff = (vy-vx)/(2.0*t);
205 err = std::abs(diff-dv);
206 std::cout << std::scientific << std::setprecision(11) << std::right
207 << std::setw(20) << t
208 << std::setw(20) << dv
209 << std::setw(20) << diff
210 << std::setw(20) << err
223 std::cout << std::right << std::setw(20) <<
"CHECK REGRET: v'(-eps) is correct? \n";
224 std::cout << std::right << std::setw(20) <<
"t" 225 << std::setw(20) <<
"v'(x)" 226 << std::setw(20) <<
"(v(x+t)-v(x-t))/2t" 227 << std::setw(20) <<
"Error" 229 for (
int i = 0; i < 13; i++) {
232 diff = (vy-vx)/(2.0*t);
233 err = std::abs(diff-dv);
234 std::cout << std::scientific << std::setprecision(11) << std::right
235 << std::setw(20) << t
236 << std::setw(20) << dv
237 << std::setw(20) << diff
238 << std::setw(20) << err
250 std::cout << std::right << std::setw(20) <<
"CHECK REGRET: v''(-eps) is correct? \n";
251 std::cout << std::right << std::setw(20) <<
"t" 252 << std::setw(20) <<
"v''(x)" 253 << std::setw(20) <<
"(v'(x+t)-v'(x-t))/2t" 254 << std::setw(20) <<
"Error" 256 for (
int i = 0; i < 13; i++) {
259 diff = (vy-vx)/(2.0*t);
260 err = std::abs(diff-dv);
261 std::cout << std::scientific << std::setprecision(11) << std::right
262 << std::setw(20) << t
263 << std::setw(20) << dv
264 << std::setw(20) << diff
265 << std::setw(20) << err
virtual void checkRegret(void)
MoreauYosidaCVaR(Teuchos::ParameterList &parlist)
MoreauYosidaCVaR(Real prob, Real eps)
Real error(Real x, int deriv=0)
Real regret(Real x, int deriv=0)