ROL
Public Member Functions | Private Types | Private Attributes | List of all members
ROL::BoundConstraint_Partitioned< Real > Class Template Reference

A composite composite BoundConstraint formed from bound constraints on subvectors of a PartitionedVector. More...

#include <ROL_BoundConstraint_Partitioned.hpp>

+ Inheritance diagram for ROL::BoundConstraint_Partitioned< Real >:

Public Member Functions

 ~BoundConstraint_Partitioned ()
 
 BoundConstraint_Partitioned (const std::vector< Teuchos::RCP< BoundConstraint< Real > > > &bnd)
 Default constructor. More...
 
void update (const Vector< Real > &x, bool flag=true, int iter=-1)
 Update bounds. More...
 
void project (Vector< Real > &x)
 Project optimization variables onto the bounds. More...
 
void pruneUpperActive (Vector< Real > &v, const Vector< Real > &x, Real eps=0.0)
 Set variables to zero if they correspond to the upper \(\epsilon\)-active set. More...
 
void pruneUpperActive (Vector< Real > &v, const Vector< Real > &g, const Vector< Real > &x, Real eps=0.0)
 Set variables to zero if they correspond to the upper \(\epsilon\)-binding set. More...
 
void pruneLowerActive (Vector< Real > &v, const Vector< Real > &x, Real eps=0.0)
 Set variables to zero if they correspond to the lower \(\epsilon\)-active set. More...
 
void pruneLowerActive (Vector< Real > &v, const Vector< Real > &g, const Vector< Real > &x, Real eps=0.0)
 Set variables to zero if they correspond to the lower \(\epsilon\)-binding set. More...
 
const Teuchos::RCP< const Vector< Real > > getLowerVectorRCP (void) const
 Return the ref count pointer to the lower bound vector. More...
 
const Teuchos::RCP< const Vector< Real > > getUpperVectorRCP (void) const
 Return the ref count pointer to the upper bound vector. More...
 
const Teuchos::RCP< Vector< Real > > getLowerVectorRCP (void)
 Return the ref count pointer to the lower bound vector. More...
 
const Teuchos::RCP< Vector< Real > > getUpperVectorRCP (void)
 Return the ref count pointer to the upper bound vector. More...
 
void setVectorToUpperBound (Vector< Real > &u)
 Set the input vector to the upper bound. More...
 
void setVectorToLowerBound (Vector< Real > &l)
 Set the input vector to the lower bound. More...
 
void pruneActive (Vector< Real > &v, const Vector< Real > &x, Real eps=0.0)
 Set variables to zero if they correspond to the \(\epsilon\)-active set. More...
 
void pruneActive (Vector< Real > &v, const Vector< Real > &g, const Vector< Real > &x, Real eps=0.0)
 Set variables to zero if they correspond to the \(\epsilon\)-binding set. More...
 
bool isFeasible (const Vector< Real > &v)
 Check if the vector, v, is feasible. More...
 
- Public Member Functions inherited from ROL::BoundConstraint< Real >
virtual ~BoundConstraint ()
 
 BoundConstraint (void)
 
 BoundConstraint (const Vector< Real > &x)
 
 BoundConstraint (const Teuchos::RCP< Vector< Real > > &x_lo, const Teuchos::RCP< Vector< Real > > &x_up, const Real scale=1)
 Default constructor. More...
 
void activate (void)
 Turn on bounds. More...
 
void deactivate (void)
 Turn off bounds. More...
 
bool isActivated (void)
 Check if bounds are on. More...
 
void pruneInactive (Vector< Real > &v, const Vector< Real > &x, Real eps=0)
 Set variables to zero if they correspond to the \(\epsilon\)-inactive set. More...
 
void pruneLowerInactive (Vector< Real > &v, const Vector< Real > &x, Real eps=0)
 
void pruneUpperInactive (Vector< Real > &v, const Vector< Real > &x, Real eps=0)
 
void pruneInactive (Vector< Real > &v, const Vector< Real > &g, const Vector< Real > &x, Real eps=0)
 Set variables to zero if they correspond to the \(\epsilon\)-nonbinding set. More...
 
void pruneLowerInactive (Vector< Real > &v, const Vector< Real > &g, const Vector< Real > &x, Real eps=0)
 
void pruneUpperInactive (Vector< Real > &v, const Vector< Real > &g, const Vector< Real > &x, Real eps=0)
 
void computeProjectedGradient (Vector< Real > &g, const Vector< Real > &x)
 Compute projected gradient. More...
 
void computeProjectedStep (Vector< Real > &v, const Vector< Real > &x)
 Compute projected step. More...
 

Private Types

typedef Vector< Real > V
 
typedef PartitionedVector< Real > PV
 
typedef std::vector< Real >::size_type uint
 

Private Attributes

std::vector< Teuchos::RCP< BoundConstraint< Real > > > bnd_
 
Teuchos::RCP< Vl_
 
Teuchos::RCP< Vu_
 
uint dim_
 

Detailed Description

template<class Real>
class ROL::BoundConstraint_Partitioned< Real >

A composite composite BoundConstraint formed from bound constraints on subvectors of a PartitionedVector.

Definition at line 61 of file ROL_BoundConstraint_Partitioned.hpp.

Member Typedef Documentation

◆ V

template<class Real >
typedef Vector<Real> ROL::BoundConstraint_Partitioned< Real >::V
private

Definition at line 63 of file ROL_BoundConstraint_Partitioned.hpp.

◆ PV

template<class Real >
typedef PartitionedVector<Real> ROL::BoundConstraint_Partitioned< Real >::PV
private

Definition at line 64 of file ROL_BoundConstraint_Partitioned.hpp.

◆ uint

template<class Real >
typedef std::vector<Real>::size_type ROL::BoundConstraint_Partitioned< Real >::uint
private

Definition at line 65 of file ROL_BoundConstraint_Partitioned.hpp.

Constructor & Destructor Documentation

◆ ~BoundConstraint_Partitioned()

template<class Real >
ROL::BoundConstraint_Partitioned< Real >::~BoundConstraint_Partitioned ( )
inline

Definition at line 76 of file ROL_BoundConstraint_Partitioned.hpp.

◆ BoundConstraint_Partitioned()

template<class Real >
ROL::BoundConstraint_Partitioned< Real >::BoundConstraint_Partitioned ( const std::vector< Teuchos::RCP< BoundConstraint< Real > > > &  bnd)
inline

Member Function Documentation

◆ update()

template<class Real >
void ROL::BoundConstraint_Partitioned< Real >::update ( const Vector< Real > &  x,
bool  flag = true,
int  iter = -1 
)
inlinevirtual

Update bounds.

The update function allows the user to update the bounds at each new iterations.

Parameters
[in]xis the optimization variable.
[in]flagis set to true if control is changed.
[in]iteris the outer algorithm iterations count.

Reimplemented from ROL::BoundConstraint< Real >.

Definition at line 113 of file ROL_BoundConstraint_Partitioned.hpp.

References ROL::BoundConstraint_Partitioned< Real >::bnd_, ROL::BoundConstraint_Partitioned< Real >::dim_, ROL::PartitionedVector< Real >::get(), and ROL::BoundConstraint< Real >::isActivated().

◆ project()

template<class Real >
void ROL::BoundConstraint_Partitioned< Real >::project ( Vector< Real > &  x)
inlinevirtual

Project optimization variables onto the bounds.

This function implements the projection of \(x\) onto the bounds, i.e.,

\[ (P_{[a,b]}(x))(\xi) = \min\{b(\xi),\max\{a(\xi),x(\xi)\}\} \quad \text{for almost every }\xi\in\Xi. \]

Parameters
[in,out]xis the optimization variable.

Reimplemented from ROL::BoundConstraint< Real >.

Definition at line 132 of file ROL_BoundConstraint_Partitioned.hpp.

References ROL::BoundConstraint_Partitioned< Real >::bnd_, ROL::BoundConstraint_Partitioned< Real >::dim_, ROL::PartitionedVector< Real >::get(), and ROL::BoundConstraint< Real >::isActivated().

◆ pruneUpperActive() [1/2]

template<class Real >
void ROL::BoundConstraint_Partitioned< Real >::pruneUpperActive ( Vector< Real > &  v,
const Vector< Real > &  x,
Real  eps = 0.0 
)
inlinevirtual

Set variables to zero if they correspond to the upper \(\epsilon\)-active set.

This function sets \(v(\xi)=0\) if \(\xi\in\mathcal{A}^+_\epsilon(x)\). Here, the upper \(\epsilon\)-active set is defined as

\[ \mathcal{A}^+_\epsilon(x) = \{\,\xi\in\Xi\,:\,x(\xi) = b(\xi)-\epsilon\,\}. \]

Parameters
[out]vis the variable to be pruned.
[in]xis the current optimization variable.
[in]epsis the active-set tolerance \(\epsilon\).

Reimplemented from ROL::BoundConstraint< Real >.

Definition at line 153 of file ROL_BoundConstraint_Partitioned.hpp.

References ROL::BoundConstraint_Partitioned< Real >::bnd_, ROL::BoundConstraint_Partitioned< Real >::dim_, ROL::PartitionedVector< Real >::get(), and ROL::BoundConstraint< Real >::isActivated().

◆ pruneUpperActive() [2/2]

template<class Real >
void ROL::BoundConstraint_Partitioned< Real >::pruneUpperActive ( Vector< Real > &  v,
const Vector< Real > &  g,
const Vector< Real > &  x,
Real  eps = 0.0 
)
inlinevirtual

Set variables to zero if they correspond to the upper \(\epsilon\)-binding set.

This function sets \(v(\xi)=0\) if \(\xi\in\mathcal{B}^+_\epsilon(x)\). Here, the upper \(\epsilon\)-binding set is defined as

\[ \mathcal{B}^+_\epsilon(x) = \{\,\xi\in\Xi\,:\,x(\xi) = b(\xi)-\epsilon,\; g(\xi) < 0 \,\}. \]

Parameters
[out]vis the variable to be pruned.
[in]xis the current optimization variable.
[in]gis the negative search direction.
[in]epsis the active-set tolerance \(\epsilon\).

Reimplemented from ROL::BoundConstraint< Real >.

Definition at line 181 of file ROL_BoundConstraint_Partitioned.hpp.

References ROL::BoundConstraint_Partitioned< Real >::bnd_, ROL::BoundConstraint_Partitioned< Real >::dim_, ROL::PartitionedVector< Real >::get(), and ROL::BoundConstraint< Real >::isActivated().

◆ pruneLowerActive() [1/2]

template<class Real >
void ROL::BoundConstraint_Partitioned< Real >::pruneLowerActive ( Vector< Real > &  v,
const Vector< Real > &  x,
Real  eps = 0.0 
)
inlinevirtual

Set variables to zero if they correspond to the lower \(\epsilon\)-active set.

This function sets \(v(\xi)=0\) if \(\xi\in\mathcal{A}^-_\epsilon(x)\). Here, the lower \(\epsilon\)-active set is defined as

\[ \mathcal{A}^-_\epsilon(x) = \{\,\xi\in\Xi\,:\,x(\xi) = a(\xi)+\epsilon\,\}. \]

Parameters
[out]vis the variable to be pruned.
[in]xis the current optimization variable.
[in]epsis the active-set tolerance \(\epsilon\).

Reimplemented from ROL::BoundConstraint< Real >.

Definition at line 208 of file ROL_BoundConstraint_Partitioned.hpp.

References ROL::BoundConstraint_Partitioned< Real >::bnd_, ROL::BoundConstraint_Partitioned< Real >::dim_, ROL::PartitionedVector< Real >::get(), and ROL::BoundConstraint< Real >::isActivated().

◆ pruneLowerActive() [2/2]

template<class Real >
void ROL::BoundConstraint_Partitioned< Real >::pruneLowerActive ( Vector< Real > &  v,
const Vector< Real > &  g,
const Vector< Real > &  x,
Real  eps = 0.0 
)
inlinevirtual

Set variables to zero if they correspond to the lower \(\epsilon\)-binding set.

This function sets \(v(\xi)=0\) if \(\xi\in\mathcal{B}^-_\epsilon(x)\). Here, the lower \(\epsilon\)-binding set is defined as

\[ \mathcal{B}^-_\epsilon(x) = \{\,\xi\in\Xi\,:\,x(\xi) = a(\xi)+\epsilon,\; g(\xi) > 0 \,\}. \]

Parameters
[out]vis the variable to be pruned.
[in]xis the current optimization variable.
[in]gis the negative search direction.
[in]epsis the active-set tolerance \(\epsilon\).

Reimplemented from ROL::BoundConstraint< Real >.

Definition at line 236 of file ROL_BoundConstraint_Partitioned.hpp.

References ROL::BoundConstraint_Partitioned< Real >::bnd_, ROL::BoundConstraint_Partitioned< Real >::dim_, ROL::PartitionedVector< Real >::get(), and ROL::BoundConstraint< Real >::isActivated().

◆ getLowerVectorRCP() [1/2]

template<class Real >
const Teuchos::RCP<const Vector<Real> > ROL::BoundConstraint_Partitioned< Real >::getLowerVectorRCP ( void  ) const
inlinevirtual

Return the ref count pointer to the lower bound vector.

Reimplemented from ROL::BoundConstraint< Real >.

Definition at line 251 of file ROL_BoundConstraint_Partitioned.hpp.

References ROL::BoundConstraint_Partitioned< Real >::l_.

Referenced by ROL::BoundConstraint_Partitioned< Real >::BoundConstraint_Partitioned().

◆ getUpperVectorRCP() [1/2]

template<class Real >
const Teuchos::RCP<const Vector<Real> > ROL::BoundConstraint_Partitioned< Real >::getUpperVectorRCP ( void  ) const
inlinevirtual

Return the ref count pointer to the upper bound vector.

Reimplemented from ROL::BoundConstraint< Real >.

Definition at line 257 of file ROL_BoundConstraint_Partitioned.hpp.

References ROL::BoundConstraint_Partitioned< Real >::u_.

Referenced by ROL::BoundConstraint_Partitioned< Real >::BoundConstraint_Partitioned().

◆ getLowerVectorRCP() [2/2]

template<class Real >
const Teuchos::RCP<Vector<Real> > ROL::BoundConstraint_Partitioned< Real >::getLowerVectorRCP ( void  )
inlinevirtual

Return the ref count pointer to the lower bound vector.

Reimplemented from ROL::BoundConstraint< Real >.

Definition at line 261 of file ROL_BoundConstraint_Partitioned.hpp.

References ROL::BoundConstraint_Partitioned< Real >::l_.

◆ getUpperVectorRCP() [2/2]

template<class Real >
const Teuchos::RCP<Vector<Real> > ROL::BoundConstraint_Partitioned< Real >::getUpperVectorRCP ( void  )
inlinevirtual

Return the ref count pointer to the upper bound vector.

Reimplemented from ROL::BoundConstraint< Real >.

Definition at line 265 of file ROL_BoundConstraint_Partitioned.hpp.

References ROL::BoundConstraint_Partitioned< Real >::u_.

◆ setVectorToUpperBound()

template<class Real >
void ROL::BoundConstraint_Partitioned< Real >::setVectorToUpperBound ( Vector< Real > &  u)
inlinevirtual

Set the input vector to the upper bound.

This function sets the input vector \(u\) to the upper bound \(b\).

Parameters
[out]uis the vector to be set to the upper bound.

Reimplemented from ROL::BoundConstraint< Real >.

Definition at line 276 of file ROL_BoundConstraint_Partitioned.hpp.

References ROL::Vector< Real >::set(), and ROL::BoundConstraint_Partitioned< Real >::u_.

◆ setVectorToLowerBound()

template<class Real >
void ROL::BoundConstraint_Partitioned< Real >::setVectorToLowerBound ( Vector< Real > &  l)
inlinevirtual

Set the input vector to the lower bound.

This function sets the input vector \(l\) to the lower bound \(a\).

Parameters
[out]lis the vector to be set to the lower bound.

Reimplemented from ROL::BoundConstraint< Real >.

Definition at line 292 of file ROL_BoundConstraint_Partitioned.hpp.

References ROL::BoundConstraint_Partitioned< Real >::l_, and ROL::Vector< Real >::set().

◆ pruneActive() [1/2]

template<class Real >
void ROL::BoundConstraint_Partitioned< Real >::pruneActive ( Vector< Real > &  v,
const Vector< Real > &  x,
Real  eps = 0.0 
)
inlinevirtual

Set variables to zero if they correspond to the \(\epsilon\)-active set.

This function sets \(v(\xi)=0\) if \(\xi\in\mathcal{A}_\epsilon(x)\). Here, the \(\epsilon\)-active set is defined as

\[ \mathcal{A}_\epsilon(x) = \mathcal{A}^+_\epsilon(x)\cap\mathcal{A}^-_\epsilon(x). \]

Parameters
[out]vis the variable to be pruned.
[in]xis the current optimization variable.
[in]epsis the active-set tolerance \(\epsilon\).

Reimplemented from ROL::BoundConstraint< Real >.

Definition at line 314 of file ROL_BoundConstraint_Partitioned.hpp.

References ROL::BoundConstraint_Partitioned< Real >::bnd_, ROL::BoundConstraint_Partitioned< Real >::dim_, ROL::PartitionedVector< Real >::get(), and ROL::BoundConstraint< Real >::isActivated().

◆ pruneActive() [2/2]

template<class Real >
void ROL::BoundConstraint_Partitioned< Real >::pruneActive ( Vector< Real > &  v,
const Vector< Real > &  g,
const Vector< Real > &  x,
Real  eps = 0.0 
)
inlinevirtual

Set variables to zero if they correspond to the \(\epsilon\)-binding set.

This function sets \(v(\xi)=0\) if \(\xi\in\mathcal{B}_\epsilon(x)\). Here, the \(\epsilon\)-binding set is defined as

\[ \mathcal{B}^+_\epsilon(x) = \mathcal{B}^+_\epsilon(x)\cap\mathcal{B}^-_\epsilon(x). \]

Parameters
[out]vis the variable to be pruned.
[in]xis the current optimization variable.
[in]gis the negative search direction.
[in]epsis the active-set tolerance \(\epsilon\).

Reimplemented from ROL::BoundConstraint< Real >.

Definition at line 341 of file ROL_BoundConstraint_Partitioned.hpp.

References ROL::BoundConstraint_Partitioned< Real >::bnd_, ROL::BoundConstraint_Partitioned< Real >::dim_, ROL::PartitionedVector< Real >::get(), and ROL::BoundConstraint< Real >::isActivated().

◆ isFeasible()

template<class Real >
bool ROL::BoundConstraint_Partitioned< Real >::isFeasible ( const Vector< Real > &  v)
inlinevirtual

Check if the vector, v, is feasible.

This function returns true if \(v = P_{[a,b]}(v)\).

Parameters
[in]vis the vector to be checked.

Reimplemented from ROL::BoundConstraint< Real >.

Definition at line 365 of file ROL_BoundConstraint_Partitioned.hpp.

References ROL::BoundConstraint_Partitioned< Real >::bnd_, ROL::BoundConstraint_Partitioned< Real >::dim_, ROL::PartitionedVector< Real >::get(), and ROL::BoundConstraint< Real >::isActivated().

Member Data Documentation

◆ bnd_

template<class Real >
std::vector<Teuchos::RCP<BoundConstraint<Real> > > ROL::BoundConstraint_Partitioned< Real >::bnd_
private

◆ l_

template<class Real >
Teuchos::RCP<V> ROL::BoundConstraint_Partitioned< Real >::l_
private

◆ u_

template<class Real >
Teuchos::RCP<V> ROL::BoundConstraint_Partitioned< Real >::u_
private

◆ dim_

template<class Real >
uint ROL::BoundConstraint_Partitioned< Real >::dim_
private

The documentation for this class was generated from the following file: