ROL
Toggle main menu visibility
Loading...
Searching...
No Matches
src
sol
function
ROL_MeanValueObjective_Def.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_MEANVALUEOBJECTIVE_DEF_HPP
11
#define ROL_MEANVALUEOBJECTIVE_DEF_HPP
12
13
namespace
ROL
{
14
15
template
<
typename
Real>
16
MeanValueObjective<Real>::MeanValueObjective
(
const
Ptr<
Objective<Real>
> &obj,
17
const
Ptr<
SampleGenerator<Real>
> &sampler) :
obj_
(obj) {
18
std::vector<Real> param =
computeSampleMean
(sampler);
19
obj_
->setParameter(param);
20
}
21
22
template
<
typename
Real>
23
void
MeanValueObjective<Real>::update
(
const
Vector<Real>
&x,
UpdateType
type,
int
iter ) {
24
obj_
->update(x,type,iter);
25
}
26
27
template
<
typename
Real>
28
void
MeanValueObjective<Real>::update
(
const
Vector<Real>
&x,
bool
flag,
int
iter ) {
29
obj_
->update(x,flag,iter);
30
}
31
32
template
<
typename
Real>
33
Real
MeanValueObjective<Real>::value
(
const
Vector<Real>
&x, Real &tol ) {
34
return
obj_
->value(x,tol);
35
}
36
37
template
<
typename
Real>
38
void
MeanValueObjective<Real>::gradient
(
Vector<Real>
&g,
const
Vector<Real>
&x, Real &tol ) {
39
obj_
->gradient(g,x,tol);
40
}
41
42
template
<
typename
Real>
43
void
MeanValueObjective<Real>::hessVec
(
Vector<Real>
&hv,
const
Vector<Real>
&v,
44
const
Vector<Real>
&x, Real &tol ) {
45
obj_
->hessVec(hv,v,x,tol);
46
}
47
48
template
<
typename
Real>
49
void
MeanValueObjective<Real>::precond
(
Vector<Real>
&Pv,
const
Vector<Real>
&v,
50
const
Vector<Real>
&x, Real &tol ) {
51
obj_
->precond(Pv,v,x,tol);
52
}
53
54
template
<
typename
Real>
55
std::vector<Real>
MeanValueObjective<Real>::computeSampleMean
(
const
Ptr<
SampleGenerator<Real>
> &sampler)
const
{
56
// Compute mean value of inputs and set parameter in objective
57
int
dim
= sampler->getMyPoint(0).size(), nsamp = sampler->numMySamples();
58
std::vector<Real> loc(
dim
), mean(
dim
), pt(
dim
);
59
Real wt(0);
60
for
(
int
i = 0; i < nsamp; i++) {
61
pt = sampler->getMyPoint(i);
62
wt = sampler->getMyWeight(i);
63
for
(
int
j = 0; j <
dim
; j++) {
64
loc[j] += wt*pt[j];
65
}
66
}
67
sampler->sumAll(&loc[0],&mean[0],
dim
);
68
return
mean;
69
}
70
71
}
72
73
#endif
ROL::MeanValueObjective::computeSampleMean
std::vector< Real > computeSampleMean(const Ptr< SampleGenerator< Real > > &sampler) const
Definition
ROL_MeanValueObjective_Def.hpp:55
ROL::MeanValueObjective::MeanValueObjective
MeanValueObjective(const Ptr< Objective< Real > > &obj, const Ptr< SampleGenerator< Real > > &sampler)
Definition
ROL_MeanValueObjective_Def.hpp:16
ROL::MeanValueObjective::value
Real value(const Vector< Real > &x, Real &tol) override
Definition
ROL_MeanValueObjective_Def.hpp:33
ROL::MeanValueObjective::precond
void precond(Vector< Real > &Pv, const Vector< Real > &v, const Vector< Real > &x, Real &tol) override
Definition
ROL_MeanValueObjective_Def.hpp:49
ROL::MeanValueObjective::obj_
const Ptr< Objective< Real > > obj_
Definition
ROL_MeanValueObjective.hpp:21
ROL::MeanValueObjective::hessVec
void hessVec(Vector< Real > &hv, const Vector< Real > &v, const Vector< Real > &x, Real &tol) override
Definition
ROL_MeanValueObjective_Def.hpp:43
ROL::MeanValueObjective::update
void update(const Vector< Real > &x, UpdateType type, int iter=-1) override
Definition
ROL_MeanValueObjective_Def.hpp:23
ROL::MeanValueObjective::gradient
void gradient(Vector< Real > &g, const Vector< Real > &x, Real &tol) override
Definition
ROL_MeanValueObjective_Def.hpp:38
ROL::ROL::Objective::Objective
Objective()
Definition
ROL_Constraint_SerialSimOpt.hpp:53
ROL::SampleGenerator
Definition
ROL_SampleGenerator.hpp:20
ROL::Vector
Defines the linear algebra or vector space interface.
Definition
ROL_Vector.hpp:51
ROL
Definition
ROL_ElementwiseVector.hpp:27
ROL::UpdateType
UpdateType
Definition
ROL_UpdateType.hpp:18
dim
constexpr auto dim
Definition
vector/test_11.cpp:23
Generated by
1.17.0