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

Has both inequality and equality constraints. Treat inequality constraint as equality with slack variable. More...

#include <ROL_InteriorPoint.hpp>

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

Public Member Functions

 InteriorPointEqualityConstraint (const Teuchos::RCP< EqualityConstraint< Real > > &incon, const Teuchos::RCP< EqualityConstraint< Real > > &eqcon)
 
 InteriorPointEqualityConstraint (const Teuchos::RCP< EqualityConstraint< Real > > &incon)
 
int getNumberConstraintEvaluations (void)
 
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::EqualityConstraint< Real >
virtual ~EqualityConstraint ()
 
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...

 
 EqualityConstraint (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 bool isFeasible (const Vector< Real > &v)
 Check if the vector, v, is feasible. 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...
 

Private Types

typedef Vector< Real > V
 
typedef PartitionedVector< Real > PV
 
typedef PV::size_type size_type
 

Private Member Functions

const PVpartition (const V &x)
 
PVpartition (V &x)
 

Private Attributes

Teuchos::RCP< EqualityConstraint< Real > > incon_
 
Teuchos::RCP< EqualityConstraint< Real > > eqcon_
 
bool hasEquality_
 
int ncval_
 

Static Private Attributes

static const size_type OPT = 0
 
static const size_type SLACK = 1
 
static const size_type INEQ = 0
 
static const size_type EQUAL = 1
 

Detailed Description

template<class Real>
class ROL::InteriorPointEqualityConstraint< Real >

Has both inequality and equality constraints. Treat inequality constraint as equality with slack variable.

Definition at line 167 of file ROL_InteriorPoint.hpp.

Member Typedef Documentation

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

Definition at line 169 of file ROL_InteriorPoint.hpp.

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

Definition at line 170 of file ROL_InteriorPoint.hpp.

template<class Real >
typedef PV::size_type ROL::InteriorPointEqualityConstraint< Real >::size_type
private

Definition at line 171 of file ROL_InteriorPoint.hpp.

Constructor & Destructor Documentation

template<class Real >
ROL::InteriorPointEqualityConstraint< Real >::InteriorPointEqualityConstraint ( const Teuchos::RCP< EqualityConstraint< Real > > &  incon,
const Teuchos::RCP< EqualityConstraint< Real > > &  eqcon 
)
inline

Definition at line 200 of file ROL_InteriorPoint.hpp.

template<class Real >
ROL::InteriorPointEqualityConstraint< Real >::InteriorPointEqualityConstraint ( const Teuchos::RCP< EqualityConstraint< Real > > &  incon)
inline

Definition at line 205 of file ROL_InteriorPoint.hpp.

Member Function Documentation

template<class Real >
const PV& ROL::InteriorPointEqualityConstraint< Real >::partition ( const V x)
inlineprivate

Definition at line 186 of file ROL_InteriorPoint.hpp.

template<class Real >
PV& ROL::InteriorPointEqualityConstraint< Real >::partition ( V x)
inlineprivate

Definition at line 192 of file ROL_InteriorPoint.hpp.

template<class Real >
int ROL::InteriorPointEqualityConstraint< Real >::getNumberConstraintEvaluations ( void  )
inline

Definition at line 209 of file ROL_InteriorPoint.hpp.

template<class Real >
void ROL::InteriorPointEqualityConstraint< Real >::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::EqualityConstraint< Real >.

Definition at line 214 of file ROL_InteriorPoint.hpp.

References ROL::PartitionedVector< Real >::get(), and ROL::InteriorPointObjective< Real >::partition().

template<class Real >
void ROL::InteriorPointEqualityConstraint< Real >::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\).

Parameters
[out]jvis the result of applying the constraint Jacobian to v at x; a constraint-space vector
[in]vis an optimization-space vector
[in]xis the constraint argument; an optimization-space vector
[in,out]tolis a tolerance for inexact evaluations; currently unused

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

The default implementation is a finite-difference approximation.


Reimplemented from ROL::EqualityConstraint< Real >.

Definition at line 238 of file ROL_InteriorPoint.hpp.

References ROL::PartitionedVector< Real >::get(), and ROL::InteriorPointObjective< Real >::partition().

template<class Real >
void ROL::InteriorPointEqualityConstraint< Real >::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\).

Parameters
[out]ajvis the result of applying the adjoint of the constraint Jacobian to v at x; a dual optimization-space vector
[in]vis a dual 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{ajv} = c'(x)^*v\), where \(v \in \mathcal{C}^*\), \(\mathsf{ajv} \in \mathcal{X}^*\).

The default implementation is a finite-difference approximation.


Reimplemented from ROL::EqualityConstraint< Real >.

Definition at line 268 of file ROL_InteriorPoint.hpp.

References ROL::PartitionedVector< Real >::get(), and ROL::InteriorPointObjective< Real >::partition().

template<class Real >
void ROL::InteriorPointEqualityConstraint< Real >::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 \).

Parameters
[out]ahuvis the result of applying the derivative of the adjoint of the constraint Jacobian at x to vector u in direction v; a dual optimization-space vector
[in]uis the direction vector; a dual constraint-space vector
[in]vis an optimization-space vector
[in]xis the constraint argument; an optimization-space vector
[in,out]tolis a tolerance for inexact evaluations; currently unused

On return, \( \mathsf{ahuv} = c''(x)(v,\cdot)^*u \), 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::EqualityConstraint< Real >.

Definition at line 306 of file ROL_InteriorPoint.hpp.

References ROL::PartitionedVector< Real >::get(), and ROL::InteriorPointObjective< Real >::partition().

Member Data Documentation

template<class Real >
const size_type ROL::InteriorPointEqualityConstraint< Real >::OPT = 0
staticprivate

Definition at line 173 of file ROL_InteriorPoint.hpp.

template<class Real >
const size_type ROL::InteriorPointEqualityConstraint< Real >::SLACK = 1
staticprivate

Definition at line 174 of file ROL_InteriorPoint.hpp.

template<class Real >
const size_type ROL::InteriorPointEqualityConstraint< Real >::INEQ = 0
staticprivate

Definition at line 176 of file ROL_InteriorPoint.hpp.

template<class Real >
const size_type ROL::InteriorPointEqualityConstraint< Real >::EQUAL = 1
staticprivate

Definition at line 177 of file ROL_InteriorPoint.hpp.

template<class Real >
Teuchos::RCP<EqualityConstraint<Real> > ROL::InteriorPointEqualityConstraint< Real >::incon_
private

Definition at line 179 of file ROL_InteriorPoint.hpp.

template<class Real >
Teuchos::RCP<EqualityConstraint<Real> > ROL::InteriorPointEqualityConstraint< Real >::eqcon_
private

Definition at line 180 of file ROL_InteriorPoint.hpp.

template<class Real >
bool ROL::InteriorPointEqualityConstraint< Real >::hasEquality_
private

Definition at line 182 of file ROL_InteriorPoint.hpp.

template<class Real >
int ROL::InteriorPointEqualityConstraint< Real >::ncval_
private

Definition at line 183 of file ROL_InteriorPoint.hpp.


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