44 #ifndef ROL_EXPECTATIONQUAD_HPP
45 #define ROL_EXPECTATIONQUAD_HPP
62 virtual Real
regret(Real x,
int deriv = 0) = 0;
68 std::cout << std::right << std::setw(20) <<
"CHECK REGRET: v(0) = 0? \n";
69 std::cout << std::right << std::setw(20) <<
"v(0)" <<
"\n";
70 std::cout << std::scientific << std::setprecision(11) << std::right
71 << std::setw(20) << std::abs(vx)
76 std::cout << std::right << std::setw(20) <<
"CHECK REGRET: x < v(x) for |x| > 0? \n";
77 std::cout << std::right << std::setw(20) <<
"x"
78 << std::right << std::setw(20) <<
"v(x)"
80 for (
int i = 0; i < 10; i++) {
81 x = scale*(Real)rand()/(Real)RAND_MAX - scale*0.5;
83 std::cout << std::scientific << std::setprecision(11) << std::right
85 << std::setw(20) << vx
97 std::cout << std::right << std::setw(20) <<
"CHECK REGRET: v(x) is convex? \n";
98 std::cout << std::right << std::setw(20) <<
"v(l*x+(1-l)*y)"
99 << std::setw(20) <<
"l*v(x)+(1-l)*v(y)"
101 for (
int i = 0; i < 10; i++) {
102 x = scale*(Real)rand()/(Real)RAND_MAX - scale*0.5;
104 y = scale*(Real)rand()/(Real)RAND_MAX - scale*0.5;
106 l = (Real)rand()/(Real)RAND_MAX;
109 std::cout << std::scientific << std::setprecision(11) << std::right
110 << std::setw(20) << vz
111 << std::setw(20) << l*vx + (1.0-l)*vy
117 x = 0.001*(Real)rand()/(Real)RAND_MAX - 0.0005;
123 std::cout << std::right << std::setw(20) <<
"CHECK REGRET: v'(x) is correct? \n";
124 std::cout << std::right << std::setw(20) <<
"t"
125 << std::setw(20) <<
"v'(x)"
126 << std::setw(20) <<
"(v(x+t)-v(x))/t"
127 << std::setw(20) <<
"Error"
129 for (
int i = 0; i < 13; i++) {
133 err = std::abs(diff-dv);
134 std::cout << std::scientific << std::setprecision(11) << std::right
135 << std::setw(20) << t
136 << std::setw(20) << dv
137 << std::setw(20) << diff
138 << std::setw(20) << err
144 x = 0.001*(Real)rand()/(Real)RAND_MAX - 0.0005;
150 std::cout << std::right << std::setw(20) <<
"CHECK REGRET: v''(x) is correct? \n";
151 std::cout << std::right << std::setw(20) <<
"t"
152 << std::setw(20) <<
"v''(x)"
153 << std::setw(20) <<
"(v'(x+t)-v'(x))/t"
154 << std::setw(20) <<
"Error"
156 for (
int i = 0; i < 13; i++) {
160 err = std::abs(diff-dv);
161 std::cout << std::scientific << std::setprecision(11) << std::right
162 << std::setw(20) << t
163 << std::setw(20) << dv
164 << std::setw(20) << diff
165 << std::setw(20) << err
197 void update(
const Real val,
const Real weight) {
220 sampler.
sumAll(&val,&gval,1);
229 sampler.
sumAll(&stat,&gstat,1);
242 sampler.
sumAll(&stat,&gstat,1);
void update(const Real val, const Vector< Real > &g, const Real weight)
void getGradient(Vector< Real > &g, SampleGenerator< Real > &sampler)
virtual void checkRegret(void)
Real getValue(SampleGenerator< Real > &sampler)
Contains definitions of custom data types in ROL.
Defines the linear algebra or vector space interface.
void sumAll(Real *input, Real *output, int dim) const
const Real getVaR() const
Teuchos::RCP< const Vector< Real > > getVector() const
void update(const Real val, const Vector< Real > &g, const Real gv, const Vector< Real > &hv, const Real weight)
void setVaR(const Real var)
virtual Real regret(Real x, int deriv=0)=0
void setVector(const Vector< Real > &vec)
void reset(Teuchos::RCP< Vector< Real > > &x0, const Vector< Real > &x, Teuchos::RCP< Vector< Real > > &v0, const Vector< Real > &v)
void getHessVec(Vector< Real > &hv, SampleGenerator< Real > &sampler)
void update(const Real val, const Real weight)
void reset(Teuchos::RCP< Vector< Real > > &x0, const Vector< Real > &x)