ROL
ROL_RandomVector.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_RANDOMVECTOR_H
11 #define ROL_RANDOMVECTOR_H
12 
13 #include "ROL_Vector.hpp"
14 #include "ROL_BoundConstraint.hpp"
15 #include "ROL_Elementwise_Function.hpp"
16 
17 
18 namespace ROL {
19 
29 template<class Real>
30 void RandomizeVector( Vector<Real> &x, const Real &lower=0.0, const Real &upper=1.0 ) {
31 
32  Elementwise::UniformlyRandom<Real> ur(lower,upper);
33  x.applyUnary(ur);
34 }
35 
44 template<class Real>
46  const ROL::Ptr<const Vector<Real> > u = bnd.getUpperBound();
47  const ROL::Ptr<const Vector<Real> > l = bnd.getLowerBound();
48 
49  Elementwise::UniformlyRandomMultiply<Real> urm;
50 
51  x.set(*u);
52  x.axpy(-1.0,*l);
53  x.applyUnary(urm);
54  x.plus(*l);
55 }
56 
57 
58 } // namespace ROL
59 
60 #endif // ROL_RANDOMVECTOR_H
virtual void plus(const Vector &x)=0
Compute , where .
virtual void axpy(const Real alpha, const Vector &x)
Compute where .
Definition: ROL_Vector.hpp:119
void RandomizeVector(Vector< Real > &x, const Real &lower=0.0, const Real &upper=1.0)
Fill a ROL::Vector with uniformly-distributed random numbers in the interval [lower,upper].
Defines the linear algebra or vector space interface.
Definition: ROL_Vector.hpp:46
virtual const Ptr< const Vector< Real > > getLowerBound(void) const
Return the ref count pointer to the lower bound vector.
virtual const Ptr< const Vector< Real > > getUpperBound(void) const
Return the ref count pointer to the upper bound vector.
Provides the interface to apply upper and lower bound constraints.
virtual void applyUnary(const Elementwise::UnaryFunction< Real > &f)
Definition: ROL_Vector.hpp:208
void RandomizeFeasibleVector(Vector< Real > &x, BoundConstraint< Real > &bnd)
Fill a ROL::Vector with uniformly-distributed random numbers which satisfy the supplied bound constra...
virtual void set(const Vector &x)
Set where .
Definition: ROL_Vector.hpp:175