ROL
Public Member Functions | Private Types | Private Member Functions | List of all members
ROL::ZOO::EqualityConstraint_SimpleEqConstrained< Real, XPrim, XDual, CPrim, CDual > Class Template Reference

Equality constraints c_i(x) = 0, where: c1(x) = x1^2+x2^2+x3^2+x4^2+x5^2 - 10 c2(x) = x2*x3-5*x4*x5 c3(x) = x1^3 + x2^3 + 1. More...

#include <ROL_SimpleEqConstrained.hpp>

+ Inheritance diagram for ROL::ZOO::EqualityConstraint_SimpleEqConstrained< Real, XPrim, XDual, CPrim, CDual >:

Public Member Functions

 EqualityConstraint_SimpleEqConstrained ()
 
void value (Vector< Real > &c, const Vector< Real > &x, Real &tol)
 Evaluate the constraint operator \(c:\mathcal{X} \rightarrow \mathcal{C}\) at \(x\). More...
 
void applyJacobian (Vector< Real > &jv, const Vector< Real > &v, const Vector< Real > &x, Real &tol)
 Apply the constraint Jacobian at \(x\), \(c'(x) \in L(\mathcal{X}, \mathcal{C})\), to vector \(v\). More...
 
void applyAdjointJacobian (Vector< Real > &ajv, const Vector< Real > &v, const Vector< Real > &x, Real &tol)
 Apply the adjoint of the the constraint Jacobian at \(x\), \(c'(x)^* \in L(\mathcal{C}^*, \mathcal{X}^*)\), to vector \(v\). More...
 
void applyAdjointHessian (Vector< Real > &ahuv, const Vector< Real > &u, const Vector< Real > &v, const Vector< Real > &x, Real &tol)
 Apply the derivative of the adjoint of the constraint Jacobian at \(x\) to vector \(u\) in direction \(v\), according to \( v \mapsto c''(x)(v,\cdot)^*u \). More...
 
- Public Member Functions inherited from ROL::Constraint< Real >
virtual ~Constraint (void)
 
 Constraint (void)
 
virtual void update (const Vector< Real > &x, bool flag=true, int iter=-1)
 Update constraint functions. x is the optimization variable, flag = true if optimization variable is changed, iter is the outer algorithm iterations count. More...
 
virtual void applyAdjointJacobian (Vector< Real > &ajv, const Vector< Real > &v, const Vector< Real > &x, const Vector< Real > &dualv, Real &tol)
 Apply the adjoint of the the constraint Jacobian at \(x\), \(c'(x)^* \in L(\mathcal{C}^*, \mathcal{X}^*)\), to vector \(v\). More...
 
virtual std::vector< Real > solveAugmentedSystem (Vector< Real > &v1, Vector< Real > &v2, const Vector< Real > &b1, const Vector< Real > &b2, const Vector< Real > &x, Real &tol)
 Approximately solves the augmented system

\[ \begin{pmatrix} I & c'(x)^* \\ c'(x) & 0 \end{pmatrix} \begin{pmatrix} v_{1} \\ v_{2} \end{pmatrix} = \begin{pmatrix} b_{1} \\ b_{2} \end{pmatrix} \]

where \(v_{1} \in \mathcal{X}\), \(v_{2} \in \mathcal{C}^*\), \(b_{1} \in \mathcal{X}^*\), \(b_{2} \in \mathcal{C}\), \(I : \mathcal{X} \rightarrow \mathcal{X}^*\) is an identity or Riesz operator, and \(0 : \mathcal{C}^* \rightarrow \mathcal{C}\) is a zero operator. More...

 
virtual void applyPreconditioner (Vector< Real > &pv, const Vector< Real > &v, const Vector< Real > &x, const Vector< Real > &g, Real &tol)
 Apply a constraint preconditioner at \(x\), \(P(x) \in L(\mathcal{C}, \mathcal{C}^*)\), to vector \(v\). Ideally, this preconditioner satisfies the following relationship:

\[ \left[c'(x) \circ R \circ c'(x)^* \circ P(x)\right] v = v \,, \]

where R is the appropriate Riesz map in \(L(\mathcal{X}^*, \mathcal{X})\). It is used by the solveAugmentedSystem method. More...

 
void activate (void)
 Turn on constraints. More...
 
void deactivate (void)
 Turn off constraints. More...
 
bool isActivated (void)
 Check if constraints are on. More...
 
virtual std::vector
< std::vector< Real > > 
checkApplyJacobian (const Vector< Real > &x, const Vector< Real > &v, const Vector< Real > &jv, const std::vector< Real > &steps, const bool printToStream=true, std::ostream &outStream=std::cout, const int order=1)
 Finite-difference check for the constraint Jacobian application. More...
 
virtual std::vector
< std::vector< Real > > 
checkApplyJacobian (const Vector< Real > &x, const Vector< Real > &v, const Vector< Real > &jv, const bool printToStream=true, std::ostream &outStream=std::cout, const int numSteps=ROL_NUM_CHECKDERIV_STEPS, const int order=1)
 Finite-difference check for the constraint Jacobian application. More...
 
virtual std::vector
< std::vector< Real > > 
checkApplyAdjointJacobian (const Vector< Real > &x, const Vector< Real > &v, const Vector< Real > &c, const Vector< Real > &ajv, const bool printToStream=true, std::ostream &outStream=std::cout, const int numSteps=ROL_NUM_CHECKDERIV_STEPS)
 Finite-difference check for the application of the adjoint of constraint Jacobian. More...
 
virtual Real checkAdjointConsistencyJacobian (const Vector< Real > &w, const Vector< Real > &v, const Vector< Real > &x, const bool printToStream=true, std::ostream &outStream=std::cout)
 
virtual Real checkAdjointConsistencyJacobian (const Vector< Real > &w, const Vector< Real > &v, const Vector< Real > &x, const Vector< Real > &dualw, const Vector< Real > &dualv, const bool printToStream=true, std::ostream &outStream=std::cout)
 
virtual std::vector
< std::vector< Real > > 
checkApplyAdjointHessian (const Vector< Real > &x, const Vector< Real > &u, const Vector< Real > &v, const Vector< Real > &hv, const std::vector< Real > &step, const bool printToScreen=true, std::ostream &outStream=std::cout, const int order=1)
 Finite-difference check for the application of the adjoint of constraint Hessian. More...
 
virtual std::vector
< std::vector< Real > > 
checkApplyAdjointHessian (const Vector< Real > &x, const Vector< Real > &u, const Vector< Real > &v, const Vector< Real > &hv, const bool printToScreen=true, std::ostream &outStream=std::cout, const int numSteps=ROL_NUM_CHECKDERIV_STEPS, const int order=1)
 Finite-difference check for the application of the adjoint of constraint Hessian. More...
 
virtual void setParameter (const std::vector< Real > &param)
 

Private Types

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

Private Member Functions

template<class VectorType >
ROL::Ptr< const vectorgetVector (const V &x)
 
template<class VectorType >
ROL::Ptr< vectorgetVector (V &x)
 

Additional Inherited Members

- Protected Member Functions inherited from ROL::Constraint< Real >
const std::vector< Real > getParameter (void) const
 

Detailed Description

template<class Real, class XPrim = StdVector<Real>, class XDual = StdVector<Real>, class CPrim = StdVector<Real>, class CDual = StdVector<Real>>
class ROL::ZOO::EqualityConstraint_SimpleEqConstrained< Real, XPrim, XDual, CPrim, CDual >

Equality constraints c_i(x) = 0, where: c1(x) = x1^2+x2^2+x3^2+x4^2+x5^2 - 10 c2(x) = x2*x3-5*x4*x5 c3(x) = x1^3 + x2^3 + 1.

Definition at line 213 of file ROL_SimpleEqConstrained.hpp.

Member Typedef Documentation

template<class Real , class XPrim = StdVector<Real>, class XDual = StdVector<Real>, class CPrim = StdVector<Real>, class CDual = StdVector<Real>>
typedef std::vector<Real> ROL::ZOO::EqualityConstraint_SimpleEqConstrained< Real, XPrim, XDual, CPrim, CDual >::vector
private

Definition at line 215 of file ROL_SimpleEqConstrained.hpp.

template<class Real , class XPrim = StdVector<Real>, class XDual = StdVector<Real>, class CPrim = StdVector<Real>, class CDual = StdVector<Real>>
typedef Vector<Real> ROL::ZOO::EqualityConstraint_SimpleEqConstrained< Real, XPrim, XDual, CPrim, CDual >::V
private

Definition at line 216 of file ROL_SimpleEqConstrained.hpp.

template<class Real , class XPrim = StdVector<Real>, class XDual = StdVector<Real>, class CPrim = StdVector<Real>, class CDual = StdVector<Real>>
typedef vector::size_type ROL::ZOO::EqualityConstraint_SimpleEqConstrained< Real, XPrim, XDual, CPrim, CDual >::uint
private

Definition at line 218 of file ROL_SimpleEqConstrained.hpp.

Constructor & Destructor Documentation

template<class Real , class XPrim = StdVector<Real>, class XDual = StdVector<Real>, class CPrim = StdVector<Real>, class CDual = StdVector<Real>>
ROL::ZOO::EqualityConstraint_SimpleEqConstrained< Real, XPrim, XDual, CPrim, CDual >::EqualityConstraint_SimpleEqConstrained ( )
inline

Definition at line 234 of file ROL_SimpleEqConstrained.hpp.

Member Function Documentation

template<class Real , class XPrim = StdVector<Real>, class XDual = StdVector<Real>, class CPrim = StdVector<Real>, class CDual = StdVector<Real>>
template<class VectorType >
ROL::Ptr<const vector> ROL::ZOO::EqualityConstraint_SimpleEqConstrained< Real, XPrim, XDual, CPrim, CDual >::getVector ( const V x)
inlineprivate
template<class Real , class XPrim = StdVector<Real>, class XDual = StdVector<Real>, class CPrim = StdVector<Real>, class CDual = StdVector<Real>>
template<class VectorType >
ROL::Ptr<vector> ROL::ZOO::EqualityConstraint_SimpleEqConstrained< Real, XPrim, XDual, CPrim, CDual >::getVector ( V x)
inlineprivate
template<class Real , class XPrim = StdVector<Real>, class XDual = StdVector<Real>, class CPrim = StdVector<Real>, class CDual = StdVector<Real>>
void ROL::ZOO::EqualityConstraint_SimpleEqConstrained< Real, XPrim, XDual, CPrim, CDual >::value ( Vector< Real > &  c,
const Vector< Real > &  x,
Real &  tol 
)
inlinevirtual

Evaluate the constraint operator \(c:\mathcal{X} \rightarrow \mathcal{C}\) at \(x\).

Parameters
[out]cis the result of evaluating the constraint operator at x; a constraint-space vector
[in]xis the constraint argument; an optimization-space vector
[in,out]tolis a tolerance for inexact evaluations; currently unused

On return, \(\mathsf{c} = c(x)\), where \(\mathsf{c} \in \mathcal{C}\), \(\mathsf{x} \in \mathcal{X}\).


Implements ROL::Constraint< Real >.

Definition at line 236 of file ROL_SimpleEqConstrained.hpp.

template<class Real , class XPrim = StdVector<Real>, class XDual = StdVector<Real>, class CPrim = StdVector<Real>, class CDual = StdVector<Real>>
void ROL::ZOO::EqualityConstraint_SimpleEqConstrained< Real, XPrim, XDual, CPrim, CDual >::applyJacobian ( Vector< Real > &  jv,
const Vector< Real > &  v,
const Vector< Real > &  x,
Real &  tol 
)
inlinevirtual

Apply the constraint Jacobian at \(x\), \(c'(x) \in L(\mathcal{X}, \mathcal{C})\), to vector \(v\).

  @param[out]      jv  is the result of applying the constraint Jacobian to @b v at @b x; a constraint-space vector
  @param[in]       v   is an optimization-space vector
  @param[in]       x   is the constraint argument; an optimization-space vector
  @param[in,out]   tol is a tolerance for inexact evaluations; currently unused

  On return, \form#76, where

\(v \in \mathcal{X}\), \(\mathsf{jv} \in \mathcal{C}\).

The default implementation is a finite-difference approximation.


Reimplemented from ROL::Constraint< Real >.

Definition at line 261 of file ROL_SimpleEqConstrained.hpp.

template<class Real , class XPrim = StdVector<Real>, class XDual = StdVector<Real>, class CPrim = StdVector<Real>, class CDual = StdVector<Real>>
void ROL::ZOO::EqualityConstraint_SimpleEqConstrained< Real, XPrim, XDual, CPrim, CDual >::applyAdjointJacobian ( Vector< Real > &  ajv,
const Vector< Real > &  v,
const Vector< Real > &  x,
Real &  tol 
)
inlinevirtual

Apply the adjoint of the the constraint Jacobian at \(x\), \(c'(x)^* \in L(\mathcal{C}^*, \mathcal{X}^*)\), to vector \(v\).

  @param[out]      ajv is the result of applying the adjoint of the constraint Jacobian to @b v at @b x; a dual optimization-space vector
  @param[in]       v   is a dual constraint-space vector
  @param[in]       x   is the constraint argument; an optimization-space vector
  @param[in,out]   tol is a tolerance for inexact evaluations; currently unused

  On return, \form#80, where

\(v \in \mathcal{C}^*\), \(\mathsf{ajv} \in \mathcal{X}^*\).

The default implementation is a finite-difference approximation.


Reimplemented from ROL::Constraint< Real >.

Definition at line 297 of file ROL_SimpleEqConstrained.hpp.

template<class Real , class XPrim = StdVector<Real>, class XDual = StdVector<Real>, class CPrim = StdVector<Real>, class CDual = StdVector<Real>>
void ROL::ZOO::EqualityConstraint_SimpleEqConstrained< Real, XPrim, XDual, CPrim, CDual >::applyAdjointHessian ( Vector< Real > &  ahuv,
const Vector< Real > &  u,
const Vector< Real > &  v,
const Vector< Real > &  x,
Real &  tol 
)
inlinevirtual

Apply the derivative of the adjoint of the constraint Jacobian at \(x\) to vector \(u\) in direction \(v\), according to \( v \mapsto c''(x)(v,\cdot)^*u \).

  @param[out]      ahuv is the result of applying the derivative of the adjoint of the constraint Jacobian at @b x to vector @b u in direction @b v; a dual optimization-space vector
  @param[in]       u    is the direction vector; a dual constraint-space vector
  @param[in]       v    is an optimization-space vector
  @param[in]       x    is the constraint argument; an optimization-space vector
  @param[in,out]   tol  is a tolerance for inexact evaluations; currently unused

  On return, \form#85, where

\(u \in \mathcal{C}^*\), \(v \in \mathcal{X}\), and \(\mathsf{ahuv} \in \mathcal{X}^*\).

The default implementation is a finite-difference approximation based on the adjoint Jacobian.


Reimplemented from ROL::Constraint< Real >.

Definition at line 334 of file ROL_SimpleEqConstrained.hpp.


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