44 #ifndef ROL_TRUNCATEDMEANQUAD_HPP 45 #define ROL_TRUNCATEDMEANQUAD_HPP 59 TEUCHOS_TEST_FOR_EXCEPTION((
beta_ <= zero), std::invalid_argument,
60 ">>> ERROR (ROL::TruncatedMeanQuadrangle): Threshold must be positive!");
72 Teuchos::ParameterList &list
73 = parlist.sublist(
"SOL").sublist(
"Risk Measure").sublist(
"Truncated Mean Quadrangle");
74 beta_ = list.get<Real>(
"Threshold");
78 Real
error(Real x,
int deriv = 0) {
79 bool inside = ( std::abs(x) ? true : false );
80 Real err(0), zero(0), half(0.5), one(1), two(2);
82 err = (inside ? half*std::pow(x,two)/
beta_ : std::abs(x)-half*
beta_);
85 err = (inside ? x/
beta_ : ((zero < x) - (x < zero)));
88 err = (inside ? one/
beta_ : zero);
95 Real X = ((deriv==0) ? x : ((deriv==1) ? one : zero));
96 Real reg =
error(x,deriv) + X;
103 Real x =
beta_, zero(0), one(1), two(2), p1(0.1);
104 Real vx = zero, vy = zero;
109 std::cout << std::right << std::setw(20) <<
"CHECK REGRET: v'(beta) is correct? \n";
110 std::cout << std::right << std::setw(20) <<
"t" 111 << std::setw(20) <<
"v'(x)" 112 << std::setw(20) <<
"(v(x+t)-v(x-t))/2t" 113 << std::setw(20) <<
"Error" 115 for (
int i = 0; i < 13; i++) {
118 diff = (vy-vx)/(two*t);
119 err = std::abs(diff-dv);
120 std::cout << std::scientific << std::setprecision(11) << std::right
121 << std::setw(20) << t
122 << std::setw(20) << dv
123 << std::setw(20) << diff
124 << std::setw(20) << err
137 std::cout << std::right << std::setw(20) <<
"CHECK REGRET: v'(-beta) is correct? \n";
138 std::cout << std::right << std::setw(20) <<
"t" 139 << std::setw(20) <<
"v'(x)" 140 << std::setw(20) <<
"(v(x+t)-v(x-t))/2t" 141 << std::setw(20) <<
"Error" 143 for (
int i = 0; i < 13; i++) {
146 diff = (vy-vx)/(two*t);
147 err = std::abs(diff-dv);
148 std::cout << std::scientific << std::setprecision(11) << std::right
149 << std::setw(20) << t
150 << std::setw(20) << dv
151 << std::setw(20) << diff
152 << std::setw(20) << err
TruncatedMeanQuadrangle(Teuchos::ParameterList &parlist)
Provides a general interface for risk measures generated through the expectation risk quadrangle...
virtual void checkRegret(void)
Run default derivative tests for the scalar regret function.
TruncatedMeanQuadrangle(Real beta)
void checkInputs(void) const
void checkRegret(void)
Run default derivative tests for the scalar regret function.
Real error(Real x, int deriv=0)
Real regret(Real x, int deriv=0)
Evaluate the scalar regret function at x.