44 #ifndef ROL_TRUNCATEDMEANQUAD_HPP 45 #define ROL_TRUNCATEDMEANQUAD_HPP 61 beta_ = ((beta > 0.) ? beta : 1.);
66 Teuchos::ParameterList &list
67 = parlist.sublist(
"SOL").sublist(
"Risk Measure").sublist(
"Truncated Mean Quadrangle");
69 Real beta = list.get(
"Threshold",1.);
70 beta_ = ((beta > 0.) ? beta : 1.);
73 Real
error(Real x,
int deriv = 0) {
74 bool inside = ( std::abs(x) ?
true : false );
77 err = (inside ? 0.5*std::pow(x,2.0)/beta_ : std::abs(x)-0.5*
beta_);
80 err = (inside ? x/beta_ : ((0.0 < x) - (x < 0.0)));
83 err = (inside ? 1.0/beta_ : 0.0);
89 Real X = ((deriv==0) ? x : ((deriv==1) ? 1.0 : 0.0));
90 Real reg =
error(x,deriv) + X;
98 Real vx = 0.0, vy = 0.0;
103 std::cout << std::right << std::setw(20) <<
"CHECK REGRET: v'(beta) is correct? \n";
104 std::cout << std::right << std::setw(20) <<
"t" 105 << std::setw(20) <<
"v'(x)" 106 << std::setw(20) <<
"(v(x+t)-v(x-t))/2t" 107 << std::setw(20) <<
"Error" 109 for (
int i = 0; i < 13; i++) {
112 diff = (vy-vx)/(2.0*t);
113 err = std::abs(diff-dv);
114 std::cout << std::scientific << std::setprecision(11) << std::right
115 << std::setw(20) << t
116 << std::setw(20) << dv
117 << std::setw(20) << diff
118 << std::setw(20) << err
131 std::cout << std::right << std::setw(20) <<
"CHECK REGRET: v'(-beta) is correct? \n";
132 std::cout << std::right << std::setw(20) <<
"t" 133 << std::setw(20) <<
"v'(x)" 134 << std::setw(20) <<
"(v(x+t)-v(x-t))/2t" 135 << std::setw(20) <<
"Error" 137 for (
int i = 0; i < 13; i++) {
140 diff = (vy-vx)/(2.0*t);
141 err = std::abs(diff-dv);
142 std::cout << std::scientific << std::setprecision(11) << std::right
143 << std::setw(20) << t
144 << std::setw(20) << dv
145 << std::setw(20) << diff
146 << std::setw(20) << err
TruncatedMeanQuadrangle(Teuchos::ParameterList &parlist)
virtual void checkRegret(void)
TruncatedMeanQuadrangle(Real beta)
Real error(Real x, int deriv=0)
Real regret(Real x, int deriv=0)