44 #ifndef ROL_RISKVECTOR_HPP
45 #define ROL_RISKVECTOR_HPP
49 #include "ROL_ParameterList.hpp"
61 std::vector<Ptr<std::vector<Real> > >
statCon_;
70 mutable std::vector<Ptr<std::vector<Real> > >
dualCon_;
75 const Real stat = 1) {
77 if (parlist != nullPtr) {
79 std::vector<Real> lower, upper;
80 bool activated(
false);
81 RandVarFunctionalInfo<Real>(*parlist,name,
nStatObj_,lower,upper,activated);
96 const Real stat = 1) {
97 int size = parlist.size();
99 for (
int i = 0; i < size; ++i) {
100 if (parlist[i] != nullPtr) {
103 std::vector<Real> lower, upper;
104 bool activated(
false);
105 RandVarFunctionalInfo<Real>(*parlist[i],name,
nStatCon_[i],lower,upper,activated);
108 if (nStatCon_[i] > 0) {
109 statCon_[i] = makePtr<std::vector<Real>>(nStatCon_[i],stat);
129 const Real stat = 0 )
140 const Real stat = 0 )
150 std::vector<Ptr<ParameterList> > &parlistCon,
152 const Real stat = 0 )
163 const Ptr<std::vector<Real> > &statObj,
164 const std::vector<Ptr<std::vector<Real> > > &statCon )
168 if (statObj != nullPtr) {
174 int size = statCon.size();
179 for (
int i = 0; i < size; ++i) {
180 if (statCon[i] != nullPtr) {
203 for (
int i = 0; i < size; ++i) {
219 for (
int i = 0; i < size; ++i) {
234 for (
int i = 0; i < size; ++i) {
250 for (
int i = 0; i < size; ++i) {
266 for (
int i = 0; i < size; ++i) {
276 return sqrt(
dot(*
this) );
279 Ptr<Vector<Real> >
clone(
void)
const {
280 Ptr<std::vector<Real> > e2 = nullPtr;
282 e2 = makePtr<std::vector<Real>>(
nStatObj_,
static_cast<Real
>(0));
285 std::vector<Ptr<std::vector<Real> > > e3(size, nullPtr);
286 for (
int j = 0; j < size; ++j) {
288 e3[j] = makePtr<std::vector<Real>>(
nStatCon_[j],
static_cast<Real
>(0));
291 return makePtr<RiskVector>(
vec_->clone(),e2,e3);
304 for (
int i = 0; i < size; ++i) {
320 for (
int i = 0; i < size; ++i) {
330 Ptr<Vector<Real> >
basis(
const int i )
const {
331 Ptr<Vector<Real> > e1;
332 Ptr<std::vector<Real> > e2 = nullPtr;
334 e2 = makePtr<std::vector<Real>>(
nStatObj_,
static_cast<Real
>(0));
337 std::vector<Ptr<std::vector<Real> > > e3(size);
338 for (
int j = 0; j < size; ++j) {
340 e3[j] = makePtr<std::vector<Real>>(
nStatCon_[j],
static_cast<Real
>(0));
343 int n1 =
vec_->dimension(), n2 = 0;
350 else if (i >= n1 && i < n1+n2) {
351 e1 =
vec_->clone(); e1->zero();
352 (*e2)[i-n1] =
static_cast<Real
>(1);
354 else if (i >= n1+n2) {
355 e1 =
vec_->clone(); e1->zero();
356 int sum = n1+n2, sum0 = sum;
357 for (
int j = 0; j < size; ++j) {
361 (*e3[j])[i-sum0] = static_cast<Real>(1);
371 return makePtr<RiskVector<Real>>(e1,e2,e3);
374 void applyUnary(
const Elementwise::UnaryFunction<Real> &f ) {
381 for (
int i = 0; i < size; ++i) {
397 for (
int i = 0; i < size; ++i) {
405 Real
reduce(
const Elementwise::ReductionOp<Real> &r )
const {
406 Real result = r.initialValue();
407 r.reduce(
vec_->reduce(r),result);
413 for (
int i = 0; i < size; ++i) {
429 for (
int i = 0; i < size; ++i) {
438 vec_->randomize(l,u);
444 for (
int i = 0; i < size; ++i) {
459 for (
int i = 0; i < size; ++i) {
471 Ptr<const StdVector<Real>>
476 else if (comp == 1) {
489 else if (comp == 1) {
508 Ptr<std::vector<Real>>
515 else if (comp == 1) {
526 Ptr<const std::vector<Real>>
533 else if (comp == 1) {
544 void setStatistic(
const Real stat,
const int comp = 0,
const int index = 0) {
550 else if ( comp == 1 ) {
560 void setStatistic(
const std::vector<Real> &stat,
const int comp = 0,
const int index = 0) {
563 if (
nStatObj_ != static_cast<int>(stat.size()) ) {
566 statObj_->assign(stat.begin(),stat.end());
569 else if ( comp == 1) {
571 if (
nStatCon_[index] != static_cast<int>(stat.size()) ) {
574 statCon_[index]->assign(stat.begin(),stat.end());
void set(const Vector< Real > &x)
Set where .
std::vector< int > nStatCon_
void scale(const Real alpha)
Compute where .
Ptr< Vector< Real > > vec_
void setStatistic(const std::vector< Real > &stat, const int comp=0, const int index=0)
void setScalar(const Real C)
Set where .
Ptr< Vector< Real > > getVector(void)
const Vector< Real > & dual(void) const
Return dual representation of , for example, the result of applying a Riesz map, or change of basis...
void axpy(const Real alpha, const Vector< Real > &x)
Compute where .
void setStatistic(const Real stat, const int comp=0, const int index=0)
Defines the linear algebra or vector space interface.
Ptr< Vector< Real > > dual_vec1_
void setVector(const Vector< Real > &vec)
void plus(const Vector< Real > &x)
Compute , where .
std::vector< Ptr< std::vector< Real > > > dualCon_
Ptr< const StdVector< Real > > getStatisticVector(const int comp, const int index=0) const
int dimension(void) const
Return dimension of the vector space.
void randomize(const Real l=0.0, const Real u=1.0)
Set vector to be uniform random between [l,u].
void applyBinary(const Elementwise::BinaryFunction< Real > &f, const Vector< Real > &x)
Ptr< std::vector< Real > > getStatistic(const int comp=0, const int index=0)
RiskVector(const Ptr< Vector< Real > > &vec, const Ptr< std::vector< Real > > &statObj, const std::vector< Ptr< std::vector< Real > > > &statCon)
void applyUnary(const Elementwise::UnaryFunction< Real > &f)
RiskVector(Ptr< ParameterList > &parlist, const Ptr< Vector< Real > > &vec, const Real stat=0)
Ptr< StdVector< Real > > getStatisticVector(const int comp, const int index=0)
RiskVector(const Ptr< Vector< Real > > &vec)
RiskVector(Ptr< ParameterList > &parlistObj, std::vector< Ptr< ParameterList > > &parlistCon, const Ptr< Vector< Real > > &vec, const Real stat=0)
Ptr< Vector< Real > > clone(void) const
Clone to make a new (uninitialized) vector.
void initializeCon(std::vector< Ptr< ParameterList > > &parlist, const Real stat=1)
Ptr< StdVector< Real > > statObj_vec_
Ptr< Vector< Real > > basis(const int i) const
Return i-th basis vector.
std::vector< Ptr< StdVector< Real > > > statCon_vec_
Real norm(void) const
Returns where .
RiskVector(std::vector< Ptr< ParameterList > > &parlist, const Ptr< Vector< Real > > &vec, const Real stat=0)
Ptr< RiskVector< Real > > dual_vec_
Ptr< const Vector< Real > > getVector(void) const
Real reduce(const Elementwise::ReductionOp< Real > &r) const
Real dot(const Vector< Real > &x) const
Compute where .
Ptr< std::vector< Real > > statObj_
std::vector< Ptr< std::vector< Real > > > statCon_
void initializeObj(Ptr< ParameterList > &parlist, const Real stat=1)
Ptr< std::vector< Real > > dualObj_
Ptr< const std::vector< Real > > getStatistic(const int comp=0, const int index=0) const