ROL
Toggle main menu visibility
Loading...
Searching...
No Matches
src
sol
function
ROL_RiskMeasure.hpp
Go to the documentation of this file.
1
// @HEADER
2
// *****************************************************************************
3
// Rapid Optimization Library (ROL) Package
4
//
5
// Copyright 2014 NTESS and the ROL contributors.
6
// SPDX-License-Identifier: BSD-3-Clause
7
// *****************************************************************************
8
// @HEADER
9
10
#ifndef ROL_RISKMEASURE_HPP
11
#define ROL_RISKMEASURE_HPP
12
13
#include "
ROL_RiskVector.hpp
"
14
58
59
namespace
ROL
{
60
61
template
<
class
Real>
62
class
RiskMeasure
{
63
protected
:
64
Real
val_
;
65
Real
gv_
;
66
ROL::Ptr<Vector<Real> >
g_
;
67
ROL::Ptr<Vector<Real> >
hv_
;
68
ROL::Ptr<Vector<Real> >
dualVector_
;
69
bool
firstReset_
;
70
71
int
comp_
;
72
int
index_
;
73
74
public
:
75
virtual
~RiskMeasure
() {}
76
77
RiskMeasure
(
void
) :
val_
(0),
gv_
(0),
firstReset_
(true),
78
comp_
(0),
index_
(0) {}
79
80
void
setRiskVectorInfo
(
const
int
comp,
const
int
index) {
81
comp_
= comp;
82
index_
= index;
83
}
84
85
int
getComponent
(
void
)
const
{
86
return
comp_
;
87
}
88
89
int
getIndex
(
void
)
const
{
90
return
index_
;
91
}
92
102
virtual
void
reset
(ROL::Ptr<
Vector<Real>
> &x0,
const
Vector<Real>
&x) {
103
x0 = ROL::constPtrCast<Vector<Real> >(
104
dynamic_cast<
const
RiskVector<Real>
&
>
(x).
getVector
());
105
// Create memory for class members
106
if
(
firstReset_
) {
107
g_
= (x0->dual()).clone();
108
hv_
= (x0->dual()).clone();
109
dualVector_
= (x0->dual()).clone();
110
firstReset_
=
false
;
111
}
112
// Zero member variables
113
const
Real
zero
(0);
114
val_
=
zero
;
gv_
=
zero
;
115
g_
->zero();
hv_
->zero();
dualVector_
->zero();
116
}
117
131
virtual
void
reset
(ROL::Ptr<
Vector<Real>
> &x0,
const
Vector<Real>
&x,
132
ROL::Ptr<
Vector<Real>
> &v0,
const
Vector<Real>
&v) {
133
reset
(x0,x);
134
// Get vector component of v. This is important for CVaR.
135
v0 = ROL::constPtrCast<Vector<Real> >(
136
dynamic_cast<
const
RiskVector<Real>
&
>
(v).
getVector
());
137
}
138
146
virtual
void
update
(
const
Real val,
const
Real weight) {
147
val_
+= weight * val;
148
}
149
159
virtual
void
update
(
const
Real val,
const
Vector<Real>
&g,
const
Real weight) {
160
g_
->axpy(weight,g);
161
}
162
178
virtual
void
update
(
const
Real val,
const
Vector<Real>
&g,
const
Real gv,
const
Vector<Real>
&hv,
179
const
Real weight) {
180
hv_
->axpy(weight,hv);
181
}
182
191
virtual
Real
getValue
(
SampleGenerator<Real>
&sampler) {
192
Real val(0);
193
sampler.
sumAll
(&
val_
,&val,1);
194
return
val;
195
}
196
208
virtual
void
getGradient
(
Vector<Real>
&g,
SampleGenerator<Real>
&sampler) {
209
sampler.
sumAll
(*
g_
,*
dualVector_
);
210
(
dynamic_cast<
RiskVector<Real>
&
>
(g)).setVector(*
dualVector_
);
211
}
212
224
virtual
void
getHessVec
(
Vector<Real>
&hv,
SampleGenerator<Real>
&sampler) {
225
sampler.
sumAll
(*
hv_
,*
dualVector_
);
226
(
dynamic_cast<
RiskVector<Real>
&
>
(hv)).setVector(*
dualVector_
);
227
}
228
};
229
230
}
231
232
#endif
zero
Objective_SerialSimOpt(const Ptr< Obj > &obj, const V &ui) z0 zero)()
Definition
ROL_Objective_SerialSimOpt.hpp:77
ROL_RiskVector.hpp
ROL::RiskMeasure::update
virtual void update(const Real val, const Vector< Real > &g, const Real gv, const Vector< Real > &hv, const Real weight)
Update internal risk measure storage for Hessian-time-a-vector computation.
Definition
ROL_RiskMeasure.hpp:178
ROL::RiskMeasure::dualVector_
ROL::Ptr< Vector< Real > > dualVector_
Definition
ROL_RiskMeasure.hpp:68
ROL::RiskMeasure::g_
ROL::Ptr< Vector< Real > > g_
Definition
ROL_RiskMeasure.hpp:66
ROL::RiskMeasure::getIndex
int getIndex(void) const
Definition
ROL_RiskMeasure.hpp:89
ROL::RiskMeasure::reset
virtual void reset(ROL::Ptr< Vector< Real > > &x0, const Vector< Real > &x)
Reset internal risk measure storage. Called for value and gradient computation.
Definition
ROL_RiskMeasure.hpp:102
ROL::RiskMeasure::gv_
Real gv_
Definition
ROL_RiskMeasure.hpp:65
ROL::RiskMeasure::update
virtual void update(const Real val, const Real weight)
Update internal risk measure storage for value computation.
Definition
ROL_RiskMeasure.hpp:146
ROL::RiskMeasure::update
virtual void update(const Real val, const Vector< Real > &g, const Real weight)
Update internal risk measure storage for gradient computation.
Definition
ROL_RiskMeasure.hpp:159
ROL::RiskMeasure::firstReset_
bool firstReset_
Definition
ROL_RiskMeasure.hpp:69
ROL::RiskMeasure::RiskMeasure
RiskMeasure(void)
Definition
ROL_RiskMeasure.hpp:77
ROL::RiskMeasure::val_
Real val_
Definition
ROL_RiskMeasure.hpp:64
ROL::RiskMeasure::comp_
int comp_
Definition
ROL_RiskMeasure.hpp:71
ROL::RiskMeasure::getValue
virtual Real getValue(SampleGenerator< Real > &sampler)
Return risk measure value.
Definition
ROL_RiskMeasure.hpp:191
ROL::RiskMeasure::reset
virtual void reset(ROL::Ptr< Vector< Real > > &x0, const Vector< Real > &x, ROL::Ptr< Vector< Real > > &v0, const Vector< Real > &v)
Reset internal risk measure storage. Called for Hessian-times-a-vector computation.
Definition
ROL_RiskMeasure.hpp:131
ROL::RiskMeasure::hv_
ROL::Ptr< Vector< Real > > hv_
Definition
ROL_RiskMeasure.hpp:67
ROL::RiskMeasure::setRiskVectorInfo
void setRiskVectorInfo(const int comp, const int index)
Definition
ROL_RiskMeasure.hpp:80
ROL::RiskMeasure::getGradient
virtual void getGradient(Vector< Real > &g, SampleGenerator< Real > &sampler)
Return risk measure (sub)gradient.
Definition
ROL_RiskMeasure.hpp:208
ROL::RiskMeasure::~RiskMeasure
virtual ~RiskMeasure()
Definition
ROL_RiskMeasure.hpp:75
ROL::RiskMeasure::getComponent
int getComponent(void) const
Definition
ROL_RiskMeasure.hpp:85
ROL::RiskMeasure::index_
int index_
Definition
ROL_RiskMeasure.hpp:72
ROL::RiskMeasure::getHessVec
virtual void getHessVec(Vector< Real > &hv, SampleGenerator< Real > &sampler)
Return risk measure Hessian-times-a-vector.
Definition
ROL_RiskMeasure.hpp:224
ROL::RiskVector
Definition
ROL_RiskVector.hpp:20
ROL::RiskVector::getVector
Ptr< const Vector< Real > > getVector(void) const
Definition
ROL_RiskVector.hpp:463
ROL::SampleGenerator
Definition
ROL_SampleGenerator.hpp:20
ROL::SampleGenerator::sumAll
void sumAll(Real *input, Real *output, int dim) const
Definition
ROL_SampleGenerator.hpp:94
ROL::Vector
Defines the linear algebra or vector space interface.
Definition
ROL_Vector.hpp:51
ROL
Definition
ROL_ElementwiseVector.hpp:27
Generated by
1.17.0