ROL
|
#include <ROL_BoundConstraint_SimOpt.hpp>
Public Member Functions | |
~BoundConstraint_SimOpt () | |
BoundConstraint_SimOpt (const Ptr< BoundConstraint< Real >> &bnd1, const Ptr< BoundConstraint< Real >> &bnd2) | |
Default constructor. More... | |
BoundConstraint_SimOpt (const Ptr< BoundConstraint< Real >> &bnd, bool optBnd=true) | |
Constructor for single bound constraint. More... | |
BoundConstraint_SimOpt (const Ptr< BoundConstraint< Real >> &bnd, const Vector< Real > &x, bool optBnd=true) | |
Constructor for single bound constraint. More... | |
void | project (Vector< Real > &x) |
Project optimization variables onto the bounds. More... | |
void | projectInterior (Vector< Real > &x) |
Project optimization variables into the interior of the feasible set. More... | |
void | pruneUpperActive (Vector< Real > &v, const Vector< Real > &x, Real eps=Real(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 xeps=Real(0), Real geps=Real(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=Real(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 xeps=Real(0), Real geps=Real(0)) |
Set variables to zero if they correspond to the lower \(\epsilon\)-binding set. More... | |
const Ptr< const Vector< Real > > | getLowerBound (void) const |
Return the ref count pointer to the lower bound vector. More... | |
const Ptr< const Vector< Real > > | getUpperBound (void) const |
Return the ref count pointer to the upper bound vector. More... | |
void | pruneActive (Vector< Real > &v, const Vector< Real > &x, Real eps=Real(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 xeps=Real(0), Real geps=Real(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... | |
void | applyInverseScalingFunction (Vector< Real > &dv, const Vector< Real > &v, const Vector< Real > &x, const Vector< Real > &g) const |
Apply inverse scaling function. More... | |
void | applyScalingFunctionJacobian (Vector< Real > &dv, const Vector< Real > &v, const Vector< Real > &x, const Vector< Real > &g) const |
Apply scaling function Jacobian. More... | |
Public Member Functions inherited from ROL::BoundConstraint< Real > | |
virtual | ~BoundConstraint () |
BoundConstraint (void) | |
BoundConstraint (const Vector< Real > &x) | |
void | activateLower (void) |
Turn on lower bound. More... | |
void | activateUpper (void) |
Turn on upper bound. More... | |
void | activate (void) |
Turn on bounds. More... | |
void | deactivateLower (void) |
Turn off lower bound. More... | |
void | deactivateUpper (void) |
Turn off upper bound. More... | |
void | deactivate (void) |
Turn off bounds. More... | |
bool | isLowerActivated (void) const |
Check if lower bound are on. More... | |
bool | isUpperActivated (void) const |
Check if upper bound are on. More... | |
bool | isActivated (void) const |
Check if bounds are on. More... | |
void | pruneActive (Vector< Real > &v, const Vector< Real > &x, Real eps=Real(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 xeps=Real(0), Real geps=Real(0)) |
Set variables to zero if they correspond to the \(\epsilon\)-binding set. More... | |
void | pruneLowerInactive (Vector< Real > &v, const Vector< Real > &x, Real eps=Real(0)) |
Set variables to zero if they correspond to the \(\epsilon\)-inactive set. More... | |
void | pruneUpperInactive (Vector< Real > &v, const Vector< Real > &x, Real eps=Real(0)) |
Set variables to zero if they correspond to the \(\epsilon\)-inactive set. More... | |
void | pruneLowerInactive (Vector< Real > &v, const Vector< Real > &g, const Vector< Real > &x, Real xeps=Real(0), Real geps=Real(0)) |
Set variables to zero if they correspond to the \(\epsilon\)-nonbinding set. More... | |
void | pruneUpperInactive (Vector< Real > &v, const Vector< Real > &g, const Vector< Real > &x, Real xeps=Real(0), Real geps=Real(0)) |
Set variables to zero if they correspond to the \(\epsilon\)-nonbinding set. More... | |
void | pruneInactive (Vector< Real > &v, const Vector< Real > &x, Real eps=Real(0)) |
Set variables to zero if they correspond to the \(\epsilon\)-inactive set. More... | |
void | pruneInactive (Vector< Real > &v, const Vector< Real > &g, const Vector< Real > &x, Real xeps=Real(0), Real geps=Real(0)) |
Set variables to zero if they correspond to the \(\epsilon\)-nonbinding set. More... | |
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 | |
const Ptr< BoundConstraint < Real > > | bnd1_ |
const Ptr< BoundConstraint < Real > > | bnd2_ |
Additional Inherited Members | |
Protected Member Functions inherited from ROL::BoundConstraint< Real > | |
Real | computeInf (const Vector< Real > &x) const |
Protected Attributes inherited from ROL::BoundConstraint< Real > | |
Ptr< Vector< Real > > | lower_ |
Ptr< Vector< Real > > | upper_ |
Definition at line 39 of file ROL_BoundConstraint_SimOpt.hpp.
|
inline |
Definition at line 44 of file ROL_BoundConstraint_SimOpt.hpp.
|
inline |
Default constructor.
The default constructor automatically turns the constraints on.
Definition at line 50 of file ROL_BoundConstraint_SimOpt.hpp.
References ROL::BoundConstraint_SimOpt< Real >::bnd1_, ROL::BoundConstraint_SimOpt< Real >::bnd2_, and ROL::BoundConstraint< Real >::deactivate().
|
inline |
Constructor for single bound constraint.
Construct a SimOpt bound constraint with either a bound on the Sim or Opt variables.
[in] | bnd | is the bound constraint. |
[in] | optBnd | is true if the bound is on the Opt variable. |
Definition at line 66 of file ROL_BoundConstraint_SimOpt.hpp.
References ROL::BoundConstraint_SimOpt< Real >::bnd1_, ROL::BoundConstraint_SimOpt< Real >::bnd2_, and ROL::BoundConstraint< Real >::deactivate().
|
inline |
Constructor for single bound constraint.
Construct a SimOpt bound constraint with either a bound on the Sim or Opt variables.
[in] | bnd | is the bound constraint. |
[in] | x | is a Sim variable if optBnd, an Opt variable otherwise. |
[in] | optBnd | is true if the bound is on the Opt variable. |
Definition at line 84 of file ROL_BoundConstraint_SimOpt.hpp.
References ROL::BoundConstraint_SimOpt< Real >::bnd1_, ROL::BoundConstraint_SimOpt< Real >::bnd2_, and ROL::BoundConstraint< Real >::deactivate().
|
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 103 of file ROL_BoundConstraint_SimOpt.hpp.
References ROL::BoundConstraint_SimOpt< Real >::bnd1_, ROL::BoundConstraint_SimOpt< Real >::bnd2_, ROL::Vector_SimOpt< Real >::get_1(), and ROL::Vector_SimOpt< Real >::get_2().
|
inlinevirtual |
Project optimization variables into the interior of the feasible set.
This function implements the projection of \(x\) into the interior of the feasible set, i.e.,
\[ (P_{[a,b]}(x))(\xi) \in (a(\xi),b(\xi)) \quad \text{for almost every }\xi\in\Xi. \]
[in,out] | x | is the optimization variable. |
Reimplemented from ROL::BoundConstraint< Real >.
Definition at line 119 of file ROL_BoundConstraint_SimOpt.hpp.
References ROL::BoundConstraint_SimOpt< Real >::bnd1_, ROL::BoundConstraint_SimOpt< Real >::bnd2_, ROL::Vector_SimOpt< Real >::get_1(), and ROL::Vector_SimOpt< Real >::get_2().
|
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_BoundConstraint_SimOpt.hpp.
References ROL::BoundConstraint_SimOpt< Real >::bnd1_, ROL::BoundConstraint_SimOpt< Real >::bnd2_, ROL::Vector_SimOpt< Real >::get_1(), and ROL::Vector_SimOpt< Real >::get_2().
|
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] | x | is the current optimization variable. |
[in] | g | is the negative search direction. |
[in] | eps | is the active-set tolerance \(\epsilon\). |
Reimplemented from ROL::BoundConstraint< Real >.
Definition at line 156 of file ROL_BoundConstraint_SimOpt.hpp.
References ROL::BoundConstraint_SimOpt< Real >::bnd1_, ROL::BoundConstraint_SimOpt< Real >::bnd2_, ROL::Vector_SimOpt< Real >::get_1(), and ROL::Vector_SimOpt< Real >::get_2().
|
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 175 of file ROL_BoundConstraint_SimOpt.hpp.
References ROL::BoundConstraint_SimOpt< Real >::bnd1_, ROL::BoundConstraint_SimOpt< Real >::bnd2_, ROL::Vector_SimOpt< Real >::get_1(), and ROL::Vector_SimOpt< Real >::get_2().
|
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] | x | is the current optimization variable. |
[in] | g | is the negative search direction. |
[in] | eps | is the active-set tolerance \(\epsilon\). |
Reimplemented from ROL::BoundConstraint< Real >.
Definition at line 195 of file ROL_BoundConstraint_SimOpt.hpp.
References ROL::BoundConstraint_SimOpt< Real >::bnd1_, ROL::BoundConstraint_SimOpt< Real >::bnd2_, ROL::Vector_SimOpt< Real >::get_1(), and ROL::Vector_SimOpt< Real >::get_2().
|
inlinevirtual |
Return the ref count pointer to the lower bound vector.
Reimplemented from ROL::BoundConstraint< Real >.
Definition at line 203 of file ROL_BoundConstraint_SimOpt.hpp.
References ROL::BoundConstraint_SimOpt< Real >::bnd1_, and ROL::BoundConstraint_SimOpt< Real >::bnd2_.
|
inlinevirtual |
Return the ref count pointer to the upper bound vector.
Reimplemented from ROL::BoundConstraint< Real >.
Definition at line 210 of file ROL_BoundConstraint_SimOpt.hpp.
References ROL::BoundConstraint_SimOpt< Real >::bnd1_, and ROL::BoundConstraint_SimOpt< Real >::bnd2_.
|
inline |
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\). |
Definition at line 228 of file ROL_BoundConstraint_SimOpt.hpp.
References ROL::BoundConstraint_SimOpt< Real >::bnd1_, ROL::BoundConstraint_SimOpt< Real >::bnd2_, ROL::Vector_SimOpt< Real >::get_1(), and ROL::Vector_SimOpt< Real >::get_2().
|
inline |
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] | x | is the current optimization variable. |
[in] | g | is the negative search direction. |
[in] | eps | is the active-set tolerance \(\epsilon\). |
Definition at line 247 of file ROL_BoundConstraint_SimOpt.hpp.
References ROL::BoundConstraint_SimOpt< Real >::bnd1_, ROL::BoundConstraint_SimOpt< Real >::bnd2_, ROL::Vector_SimOpt< Real >::get_1(), and ROL::Vector_SimOpt< Real >::get_2().
|
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 260 of file ROL_BoundConstraint_SimOpt.hpp.
References ROL::BoundConstraint_SimOpt< Real >::bnd1_, ROL::BoundConstraint_SimOpt< Real >::bnd2_, ROL::Vector_SimOpt< Real >::get_1(), and ROL::Vector_SimOpt< Real >::get_2().
|
inlinevirtual |
Apply inverse scaling function.
This function applies the inverse scaling function \(d(x,g)\) to a vector \(v\), i.e., the output is \(\mathrm{diag}(d(x,g)^{-1})v\). The scaling function must satisfy: (i) \(d(x,g)_i = 0\) if \(x_i = a_i\) and \(g_i \ge 0\); (ii) \(d(x,g)_i = 0\) if \(x_i = b_i\) and \(g_i \le 0\); and (iii) \(d(x,g)_i > 0\) otherwise.
[out] | dv | is the inverse scaling function applied to v. |
[in] | v | is the vector being scaled. |
[in] | x | is the primal vector at which the scaling function is evaluated. |
[in] | g | is the dual vector at which the scaling function is evaluated. |
Reimplemented from ROL::BoundConstraint< Real >.
Definition at line 278 of file ROL_BoundConstraint_SimOpt.hpp.
References ROL::BoundConstraint_SimOpt< Real >::bnd1_, ROL::BoundConstraint_SimOpt< Real >::bnd2_, ROL::Vector_SimOpt< Real >::get_1(), and ROL::Vector_SimOpt< Real >::get_2().
|
inlinevirtual |
Apply scaling function Jacobian.
This function applies the Jacobian of the scaling function \(d(x,g)\) to a vector \(v\). The output is \(\mathrm{diag}(d_x(x,g)g)v\). The scaling function must satisfy: (i) \(d(x,g)_i = 0\) if \(x_i = a_i\) and \(g_i \ge 0\); (ii) \(d(x,g)_i = 0\) if \(x_i = b_i\) and \(g_i \le 0\); and (iii) \(d(x,g)_i > 0\) otherwise.
[out] | dv | is the scaling function Jacobian applied to v. |
[in] | v | is the vector being scaled. |
[in] | x | is the primal vector at which the scaling function is evaluated. |
[in] | g | is the dual vector at which the scaling function is evaluated. |
Reimplemented from ROL::BoundConstraint< Real >.
Definition at line 300 of file ROL_BoundConstraint_SimOpt.hpp.
References ROL::BoundConstraint_SimOpt< Real >::bnd1_, ROL::BoundConstraint_SimOpt< Real >::bnd2_, ROL::Vector_SimOpt< Real >::get_1(), and ROL::Vector_SimOpt< Real >::get_2().
|
private |
Definition at line 41 of file ROL_BoundConstraint_SimOpt.hpp.
Referenced by ROL::BoundConstraint_SimOpt< Real >::applyInverseScalingFunction(), ROL::BoundConstraint_SimOpt< Real >::applyScalingFunctionJacobian(), ROL::BoundConstraint_SimOpt< Real >::BoundConstraint_SimOpt(), ROL::BoundConstraint_SimOpt< Real >::getLowerBound(), ROL::BoundConstraint_SimOpt< Real >::getUpperBound(), ROL::BoundConstraint_SimOpt< Real >::isFeasible(), ROL::BoundConstraint_SimOpt< Real >::project(), ROL::BoundConstraint_SimOpt< Real >::projectInterior(), ROL::BoundConstraint_SimOpt< Real >::pruneActive(), ROL::BoundConstraint_SimOpt< Real >::pruneLowerActive(), and ROL::BoundConstraint_SimOpt< Real >::pruneUpperActive().
|
private |
Definition at line 41 of file ROL_BoundConstraint_SimOpt.hpp.
Referenced by ROL::BoundConstraint_SimOpt< Real >::applyInverseScalingFunction(), ROL::BoundConstraint_SimOpt< Real >::applyScalingFunctionJacobian(), ROL::BoundConstraint_SimOpt< Real >::BoundConstraint_SimOpt(), ROL::BoundConstraint_SimOpt< Real >::getLowerBound(), ROL::BoundConstraint_SimOpt< Real >::getUpperBound(), ROL::BoundConstraint_SimOpt< Real >::isFeasible(), ROL::BoundConstraint_SimOpt< Real >::project(), ROL::BoundConstraint_SimOpt< Real >::projectInterior(), ROL::BoundConstraint_SimOpt< Real >::pruneActive(), ROL::BoundConstraint_SimOpt< Real >::pruneLowerActive(), and ROL::BoundConstraint_SimOpt< Real >::pruneUpperActive().