ROL
|
#include <ROL_RiskBoundConstraint.hpp>
Public Member Functions | |
RiskBoundConstraint (Teuchos::ParameterList &parlist, const Teuchos::RCP< BoundConstraint< Real > > &bc=Teuchos::null) | |
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) |
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) |
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) |
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) |
Set variables to zero if they correspond to the lower \(\epsilon\)-binding set. More... | |
void | setVectorToUpperBound (Vector< Real > &u) |
Set the input vector to the upper bound. 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... | |
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) |
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) |
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... | |
![]() | |
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... | |
virtual const Teuchos::RCP< Vector< Real > > | getLowerVectorRCP (void) |
Return the ref count pointer to the lower bound vector. More... | |
virtual const Teuchos::RCP< Vector< Real > > | getUpperVectorRCP (void) |
Return the ref count pointer to the upper bound vector. 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 Attributes | |
Teuchos::RCP< BoundConstraint< Real > > | bc_ |
Teuchos::RCP< StdBoundConstraint< Real > > | stat_bc_ |
std::vector< Real > | lower_ |
std::vector< Real > | upper_ |
bool | augmented_ |
bool | activated_ |
int | nStat_ |
bool | isLOinitialized_ |
bool | isHIinitialized_ |
Teuchos::RCP< RiskVector< Real > > | lo_ |
Teuchos::RCP< RiskVector< Real > > | hi_ |
Definition at line 54 of file ROL_RiskBoundConstraint.hpp.
|
inline |
Definition at line 68 of file ROL_RiskBoundConstraint.hpp.
References ROL::BoundConstraint< Real >::activate(), ROL::RiskBoundConstraint< Real >::activated_, ROL::RiskBoundConstraint< Real >::augmented_, ROL::BoundConstraint< Real >::deactivate(), ROL::RiskBoundConstraint< Real >::lower_, ROL::RiskBoundConstraint< Real >::nStat_, ROL::RiskBoundConstraint< Real >::stat_bc_, and ROL::RiskBoundConstraint< Real >::upper_.
|
inlinevirtual |
Update bounds.
The update function allows the user to update the bounds at each new iterations.
[in] | x | is the optimization variable. |
[in] | flag | is set to true if control is changed. |
[in] | iter | is the outer algorithm iterations count. |
Reimplemented from ROL::BoundConstraint< Real >.
Definition at line 114 of file ROL_RiskBoundConstraint.hpp.
References ROL::RiskBoundConstraint< Real >::activated_, ROL::RiskBoundConstraint< Real >::augmented_, ROL::RiskBoundConstraint< Real >::bc_, and ROL::RiskBoundConstraint< Real >::stat_bc_.
|
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. \]
[in,out] | x | is the optimization variable. |
Reimplemented from ROL::BoundConstraint< Real >.
Definition at line 125 of file ROL_RiskBoundConstraint.hpp.
References ROL::RiskBoundConstraint< Real >::activated_, ROL::RiskBoundConstraint< Real >::augmented_, ROL::RiskBoundConstraint< Real >::bc_, and ROL::RiskBoundConstraint< Real >::stat_bc_.
|
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\,\}. \]
[out] | v | is the variable to be pruned. |
[in] | x | is the current optimization variable. |
[in] | eps | is the active-set tolerance \(\epsilon\). |
Reimplemented from ROL::BoundConstraint< Real >.
Definition at line 136 of file ROL_RiskBoundConstraint.hpp.
References ROL::RiskBoundConstraint< Real >::activated_, ROL::RiskBoundConstraint< Real >::augmented_, ROL::RiskBoundConstraint< Real >::bc_, and ROL::RiskBoundConstraint< Real >::stat_bc_.
|
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 \,\}. \]
[out] | v | is the variable to be pruned. |
[in] | g | is the negative search direction. |
[in] | x | is the current optimization variable. |
[in] | eps | is the active-set tolerance \(\epsilon\). |
Reimplemented from ROL::BoundConstraint< Real >.
Definition at line 149 of file ROL_RiskBoundConstraint.hpp.
References ROL::RiskBoundConstraint< Real >::activated_, ROL::RiskBoundConstraint< Real >::augmented_, ROL::RiskBoundConstraint< Real >::bc_, and ROL::RiskBoundConstraint< Real >::stat_bc_.
|
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\,\}. \]
[out] | v | is the variable to be pruned. |
[in] | x | is the current optimization variable. |
[in] | eps | is the active-set tolerance \(\epsilon\). |
Reimplemented from ROL::BoundConstraint< Real >.
Definition at line 164 of file ROL_RiskBoundConstraint.hpp.
References ROL::RiskBoundConstraint< Real >::activated_, ROL::RiskBoundConstraint< Real >::augmented_, ROL::RiskBoundConstraint< Real >::bc_, and ROL::RiskBoundConstraint< Real >::stat_bc_.
|
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 \,\}. \]
[out] | v | is the variable to be pruned. |
[in] | g | is the negative search direction. |
[in] | x | is the current optimization variable. |
[in] | eps | is the active-set tolerance \(\epsilon\). |
Reimplemented from ROL::BoundConstraint< Real >.
Definition at line 177 of file ROL_RiskBoundConstraint.hpp.
References ROL::RiskBoundConstraint< Real >::activated_, ROL::RiskBoundConstraint< Real >::augmented_, ROL::RiskBoundConstraint< Real >::bc_, and ROL::RiskBoundConstraint< Real >::stat_bc_.
|
inlinevirtual |
Set the input vector to the upper bound.
This function sets the input vector \(u\) to the upper bound \(b\).
[out] | u | is the vector to be set to the upper bound. |
Reimplemented from ROL::BoundConstraint< Real >.
Definition at line 192 of file ROL_RiskBoundConstraint.hpp.
References ROL::RiskBoundConstraint< Real >::activated_, ROL::RiskBoundConstraint< Real >::augmented_, ROL::RiskBoundConstraint< Real >::bc_, and ROL::RiskBoundConstraint< Real >::stat_bc_.
|
inlinevirtual |
Return the ref count pointer to the lower bound vector.
Reimplemented from ROL::BoundConstraint< Real >.
Definition at line 203 of file ROL_RiskBoundConstraint.hpp.
References ROL::RiskBoundConstraint< Real >::augmented_, ROL::RiskBoundConstraint< Real >::bc_, ROL::RiskBoundConstraint< Real >::isLOinitialized_, ROL::RiskBoundConstraint< Real >::lo_, and ROL::RiskBoundConstraint< Real >::lower_.
|
inlinevirtual |
Return the ref count pointer to the upper bound vector.
Reimplemented from ROL::BoundConstraint< Real >.
Definition at line 213 of file ROL_RiskBoundConstraint.hpp.
References ROL::RiskBoundConstraint< Real >::augmented_, ROL::RiskBoundConstraint< Real >::bc_, ROL::RiskBoundConstraint< Real >::hi_, ROL::RiskBoundConstraint< Real >::isHIinitialized_, and ROL::RiskBoundConstraint< Real >::upper_.
|
inlinevirtual |
Set the input vector to the lower bound.
This function sets the input vector \(l\) to the lower bound \(a\).
[out] | l | is the vector to be set to the lower bound. |
Reimplemented from ROL::BoundConstraint< Real >.
Definition at line 223 of file ROL_RiskBoundConstraint.hpp.
References ROL::RiskBoundConstraint< Real >::activated_, ROL::RiskBoundConstraint< Real >::augmented_, ROL::RiskBoundConstraint< Real >::bc_, and ROL::RiskBoundConstraint< Real >::stat_bc_.
|
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). \]
[out] | v | is the variable to be pruned. |
[in] | x | is the current optimization variable. |
[in] | eps | is the active-set tolerance \(\epsilon\). |
Reimplemented from ROL::BoundConstraint< Real >.
Definition at line 234 of file ROL_RiskBoundConstraint.hpp.
References ROL::RiskBoundConstraint< Real >::activated_, ROL::RiskBoundConstraint< Real >::augmented_, ROL::RiskBoundConstraint< Real >::bc_, and ROL::RiskBoundConstraint< Real >::stat_bc_.
|
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). \]
[out] | v | is the variable to be pruned. |
[in] | g | is the negative search direction. |
[in] | x | is the current optimization variable. |
[in] | eps | is the active-set tolerance \(\epsilon\). |
Reimplemented from ROL::BoundConstraint< Real >.
Definition at line 247 of file ROL_RiskBoundConstraint.hpp.
References ROL::RiskBoundConstraint< Real >::activated_, ROL::RiskBoundConstraint< Real >::augmented_, ROL::RiskBoundConstraint< Real >::bc_, and ROL::RiskBoundConstraint< Real >::stat_bc_.
|
inlinevirtual |
Check if the vector, v, is feasible.
This function returns true if \(v = P_{[a,b]}(v)\).
[in] | v | is the vector to be checked. |
Reimplemented from ROL::BoundConstraint< Real >.
Definition at line 262 of file ROL_RiskBoundConstraint.hpp.
References ROL::RiskBoundConstraint< Real >::activated_, ROL::RiskBoundConstraint< Real >::augmented_, ROL::RiskBoundConstraint< Real >::bc_, and ROL::RiskBoundConstraint< Real >::stat_bc_.
|
private |
Definition at line 56 of file ROL_RiskBoundConstraint.hpp.
Referenced by ROL::RiskBoundConstraint< Real >::getLowerVectorRCP(), ROL::RiskBoundConstraint< Real >::getUpperVectorRCP(), ROL::RiskBoundConstraint< Real >::isFeasible(), ROL::RiskBoundConstraint< Real >::project(), ROL::RiskBoundConstraint< Real >::pruneActive(), ROL::RiskBoundConstraint< Real >::pruneLowerActive(), ROL::RiskBoundConstraint< Real >::pruneUpperActive(), ROL::RiskBoundConstraint< Real >::setVectorToLowerBound(), ROL::RiskBoundConstraint< Real >::setVectorToUpperBound(), and ROL::RiskBoundConstraint< Real >::update().
|
private |
Definition at line 57 of file ROL_RiskBoundConstraint.hpp.
Referenced by ROL::RiskBoundConstraint< Real >::isFeasible(), ROL::RiskBoundConstraint< Real >::project(), ROL::RiskBoundConstraint< Real >::pruneActive(), ROL::RiskBoundConstraint< Real >::pruneLowerActive(), ROL::RiskBoundConstraint< Real >::pruneUpperActive(), ROL::RiskBoundConstraint< Real >::RiskBoundConstraint(), ROL::RiskBoundConstraint< Real >::setVectorToLowerBound(), ROL::RiskBoundConstraint< Real >::setVectorToUpperBound(), and ROL::RiskBoundConstraint< Real >::update().
|
private |
Definition at line 58 of file ROL_RiskBoundConstraint.hpp.
Referenced by ROL::RiskBoundConstraint< Real >::getLowerVectorRCP(), and ROL::RiskBoundConstraint< Real >::RiskBoundConstraint().
|
private |
Definition at line 58 of file ROL_RiskBoundConstraint.hpp.
Referenced by ROL::RiskBoundConstraint< Real >::getUpperVectorRCP(), and ROL::RiskBoundConstraint< Real >::RiskBoundConstraint().
|
private |
Definition at line 60 of file ROL_RiskBoundConstraint.hpp.
Referenced by ROL::RiskBoundConstraint< Real >::getLowerVectorRCP(), ROL::RiskBoundConstraint< Real >::getUpperVectorRCP(), ROL::RiskBoundConstraint< Real >::isFeasible(), ROL::RiskBoundConstraint< Real >::project(), ROL::RiskBoundConstraint< Real >::pruneActive(), ROL::RiskBoundConstraint< Real >::pruneLowerActive(), ROL::RiskBoundConstraint< Real >::pruneUpperActive(), ROL::RiskBoundConstraint< Real >::RiskBoundConstraint(), ROL::RiskBoundConstraint< Real >::setVectorToLowerBound(), ROL::RiskBoundConstraint< Real >::setVectorToUpperBound(), and ROL::RiskBoundConstraint< Real >::update().
|
private |
Definition at line 60 of file ROL_RiskBoundConstraint.hpp.
Referenced by ROL::RiskBoundConstraint< Real >::isFeasible(), ROL::RiskBoundConstraint< Real >::project(), ROL::RiskBoundConstraint< Real >::pruneActive(), ROL::RiskBoundConstraint< Real >::pruneLowerActive(), ROL::RiskBoundConstraint< Real >::pruneUpperActive(), ROL::RiskBoundConstraint< Real >::RiskBoundConstraint(), ROL::RiskBoundConstraint< Real >::setVectorToLowerBound(), ROL::RiskBoundConstraint< Real >::setVectorToUpperBound(), and ROL::RiskBoundConstraint< Real >::update().
|
private |
Definition at line 61 of file ROL_RiskBoundConstraint.hpp.
Referenced by ROL::RiskBoundConstraint< Real >::RiskBoundConstraint().
|
mutableprivate |
Definition at line 63 of file ROL_RiskBoundConstraint.hpp.
Referenced by ROL::RiskBoundConstraint< Real >::getLowerVectorRCP().
|
mutableprivate |
Definition at line 63 of file ROL_RiskBoundConstraint.hpp.
Referenced by ROL::RiskBoundConstraint< Real >::getUpperVectorRCP().
|
mutableprivate |
Definition at line 64 of file ROL_RiskBoundConstraint.hpp.
Referenced by ROL::RiskBoundConstraint< Real >::getLowerVectorRCP().
|
mutableprivate |
Definition at line 64 of file ROL_RiskBoundConstraint.hpp.
Referenced by ROL::RiskBoundConstraint< Real >::getUpperVectorRCP().