ROL
ROL_MeanVarianceQuadrangle.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_MEANVARIANCEQUAD_HPP
11#define ROL_MEANVARIANCEQUAD_HPP
12
14
40
41namespace ROL {
42
43template<class Real>
45private:
46 Real coeff_;
47
48 void parseParameterList(ROL::ParameterList &parlist) {
49 std::string type = parlist.sublist("SOL").get("Type","Risk Averse");
50 ROL::ParameterList list;
51 if (type == "Risk Averse") {
52 list = parlist.sublist("SOL").sublist("Risk Measure").sublist("Safety Margin");
53 }
54 else if (type == "Regret") {
55 list = parlist.sublist("SOL").sublist("Regret Measure").sublist("Mean L2");
56 }
57 else if (type == "Error" || type == "Deviation") {
58 coeff_ = static_cast<Real>(1);
59 return;
60 }
61 coeff_ = list.get<Real>("Coefficient");
62 }
63
64 void checkInputs(void) const {
65 Real zero(0);
66 ROL_TEST_FOR_EXCEPTION((coeff_ <= zero), std::invalid_argument,
67 ">>> ERROR (ROL::MeanVarianceQuadrangle): Coefficient must be positive!");
68 }
69
70public:
75 MeanVarianceQuadrangle(const Real coeff = 1)
76 : ExpectationQuad<Real>(), coeff_(coeff) {
78 }
79
88 MeanVarianceQuadrangle(ROL::ParameterList &parlist)
89 : ExpectationQuad<Real>() {
90 parseParameterList(parlist);
92 }
93
94 Real error(Real x, int deriv = 0) {
95 Real err(0), two(2);
96 if (deriv==0) {
97 err = coeff_*x*x;
98 }
99 else if (deriv==1) {
100 err = two*coeff_*x;
101 }
102 else {
103 err = two*coeff_;
104 }
105 return err;
106 }
107
108 Real regret(Real x, int deriv = 0) {
109 Real zero(0), one(1);
110 Real X = ((deriv==0) ? x : ((deriv==1) ? one : zero));
111 Real reg = error(x,deriv) + X;
112 return reg;
113 }
114
115};
116
117}
118#endif
Objective_SerialSimOpt(const Ptr< Obj > &obj, const V &ui) z0 zero)()
Real error(Real x, int deriv=0)
Evaluate the scalar error function at x.
MeanVarianceQuadrangle(ROL::ParameterList &parlist)
Constructor.
Real regret(Real x, int deriv=0)
Evaluate the scalar regret function at x.
MeanVarianceQuadrangle(const Real coeff=1)
Constructor.
void parseParameterList(ROL::ParameterList &parlist)