44 #ifndef ROL_RISKVECTOR_HPP 45 #define ROL_RISKVECTOR_HPP 48 #include "Teuchos_ParameterList.hpp" 49 #include "Teuchos_Array.hpp" 55 typedef typename std::vector<Real>::size_type
uint;
59 Teuchos::RCP<Vector<Real> >
vec_;
69 const Real stat = 1. )
70 : vec_(vec), augmented_(false), nStat_(0) {
72 dual_vec1_ = vec->dual().clone();
73 std::string type = parlist.sublist(
"SOL").sublist(
"Risk Measure").get(
"Name",
"CVaR");
74 if ( type ==
"CVaR" ||
76 type ==
"KL Divergence" ||
77 type ==
"Moreau-Yosida CVaR" ||
78 type ==
"Log-Exponential Quadrangle" ||
79 type ==
"Log-Quantile Quadrangle" ||
80 type ==
"Quantile-Based Quadrangle" ||
81 type ==
"Truncated Mean Quadrangle" ) {
84 stat_.resize(nStat_,stat);
86 else if ( type ==
"Mixed-Quantile Quadrangle" ) {
87 Teuchos::ParameterList &list
88 = parlist.sublist(
"SOL").sublist(
"Risk Measure").sublist(
"Mixed-Quantile Quadrangle");
89 Teuchos::Array<Real> prob
90 = Teuchos::getArrayFromStringParameter<Real>(list,
"Probability Array");
93 stat_.resize(nStat_,stat);
95 else if ( type ==
"Quantile-Radius Quadrangle" ) {
98 stat_.resize(nStat_,stat);
103 const bool augmented =
false )
104 : vec_(vec), augmented_(augmented), nStat_((augmented ? 1 : 0)) {
106 dual_vec1_ = vec->dual().clone();
108 stat_.resize(nStat_,0.);
113 const std::vector<Real> &stat,
114 const bool augmented =
true )
115 : stat_(stat), vec_(vec), augmented_(augmented), nStat_(stat.size()) {
116 dual_vec1_ = vec->dual().clone();
123 for ( uint i = 0; i <
nStat_; i++ ) {
132 for ( uint i = 0; i <
nStat_; i++ ) {
143 for ( uint i = 0; i <
nStat_; i++ ) {
153 Real xprod = vec_->dot(*(xs.
getVector()));
155 for ( uint i = 0; i <
nStat_; i++ ) {
163 return sqrt( this->
dot(*
this) );
167 TEUCHOS_TEST_FOR_EXCEPTION((i < 0 || i > (
int)nStat_-1),std::invalid_argument,
168 ">>> ERROR (ROL::RiskVector): index out-of-bounds in getStatistic!");
176 Teuchos::RCP<Vector<Real> >
clone()
const {
177 std::vector<Real> stat(nStat_,0.);
178 Teuchos::RCP<Vector<Real> > vec = Teuchos::rcp_dynamic_cast<
Vector<Real> >(
180 return Teuchos::rcp(
new RiskVector( vec, stat, augmented_ ) );
184 dual_vec1_->set(vec_->dual());
185 dual_vec_ = Teuchos::rcp(
new RiskVector<Real>(dual_vec1_,stat_,augmented_));
190 stat_.assign(nStat_,stat);
194 stat_.assign(stat.begin(),stat.end());
void scale(const Real alpha)
Compute where .
const Vector< Real > & dual(void) const
Return dual representation of , for example, the result of applying a Riesz map, or change of basis...
const Real getStatistic(const int i=0) const
void axpy(const Real alpha, const Vector< Real > &x)
Compute where .
Defines the linear algebra or vector space interface.
void setStatistic(const std::vector< Real > &stat)
void setVector(const Vector< Real > &vec)
void plus(const Vector< Real > &x)
Compute , where .
Teuchos::RCP< const Vector< Real > > getVector() const
Teuchos::RCP< RiskVector< Real > > dual_vec_
RiskVector(const Teuchos::RCP< Vector< Real > > &vec, const std::vector< Real > &stat, const bool augmented=true)
void setStatistic(const Real stat)
Teuchos::RCP< Vector< Real > > clone() const
Clone to make a new (uninitialized) vector.
std::vector< Real >::size_type uint
Teuchos::RCP< Vector< Real > > dual_vec1_
RiskVector(Teuchos::ParameterList &parlist, const Teuchos::RCP< Vector< Real > > &vec, const Real stat=1.)
std::vector< Real > stat_
Real dot(const Vector< Real > &x) const
Compute where .
Teuchos::RCP< Vector< Real > > vec_
RiskVector(const Teuchos::RCP< Vector< Real > > &vec, const bool augmented=false)
Real norm() const
Returns where .