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

Express the Primal-Dual Interior Point gradient as an equality constraint. More...

#include <ROL_InteriorPointPrimalDualResidual.hpp>

+ Inheritance diagram for ROL::InteriorPoint::PrimalDualResidual< Real >:

Public Member Functions

 PrimalDualResidual (const Teuchos::RCP< OBJ > &obj, const Teuchos::RCP< CON > &eqcon, const Teuchos::RCP< CON > &incon, const V &x)
 
void value (V &c, const V &x, Real &tol)
 Evaluate the constraint operator \(c:\mathcal{X} \rightarrow \mathcal{C}\) at \(x\). More...
 
void applyJacobian (V &jv, const V &v, const V &x, Real &tol)
 Apply the constraint Jacobian at \(x\), \(c'(x) \in L(\mathcal{X}, \mathcal{C})\), to vector \(v\). More...
 
void updatePenalty (Real mu)
 
- Public Member Functions inherited from ROL::EqualityConstraint< Real >
virtual ~EqualityConstraint ()
 
virtual 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...
 
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 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...
 
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 Objective< Real > OBJ
 
typedef EqualityConstraint< Real > CON
 
typedef PV::size_type size_type
 

Private Attributes

Teuchos::RCP< OBJobj_
 
Teuchos::RCP< CONeqcon_
 
Teuchos::RCP< CONincon_
 
Teuchos::RCP< Vqo_
 
Teuchos::RCP< Vqs_
 
Teuchos::RCP< Vqe_
 
Teuchos::RCP< Vqi_
 
Real mu_
 
Teuchos::RCP< LinearOperator< Real > > sym_
 

Static Private Attributes

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

Detailed Description

template<class Real>
class ROL::InteriorPoint::PrimalDualResidual< Real >

Express the Primal-Dual Interior Point gradient as an equality constraint.

See Nocedal & Wright second edition equation (19.6) In that book the convention for naming components

x - optimization variable (here subscript o) s - slack variable (here subscript s) y - Lagrange multiplier for the equality constraint (here subscript e)

z - Lagrange multiplier for the inequality constraint (here subscript i)

Definition at line 77 of file ROL_InteriorPointPrimalDualResidual.hpp.

Member Typedef Documentation

template<class Real >
typedef Vector<Real> ROL::InteriorPoint::PrimalDualResidual< Real >::V
private

Definition at line 80 of file ROL_InteriorPointPrimalDualResidual.hpp.

template<class Real >
typedef PartitionedVector<Real> ROL::InteriorPoint::PrimalDualResidual< Real >::PV
private

Definition at line 81 of file ROL_InteriorPointPrimalDualResidual.hpp.

template<class Real >
typedef Objective<Real> ROL::InteriorPoint::PrimalDualResidual< Real >::OBJ
private

Definition at line 82 of file ROL_InteriorPointPrimalDualResidual.hpp.

template<class Real >
typedef EqualityConstraint<Real> ROL::InteriorPoint::PrimalDualResidual< Real >::CON
private

Definition at line 83 of file ROL_InteriorPointPrimalDualResidual.hpp.

template<class Real >
typedef PV::size_type ROL::InteriorPoint::PrimalDualResidual< Real >::size_type
private

Definition at line 86 of file ROL_InteriorPointPrimalDualResidual.hpp.

Constructor & Destructor Documentation

template<class Real >
ROL::InteriorPoint::PrimalDualResidual< Real >::PrimalDualResidual ( const Teuchos::RCP< OBJ > &  obj,
const Teuchos::RCP< CON > &  eqcon,
const Teuchos::RCP< CON > &  incon,
const V x 
)
inline

Member Function Documentation

template<class Real >
void ROL::InteriorPoint::PrimalDualResidual< Real >::value ( V c,
const V 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 128 of file ROL_InteriorPointPrimalDualResidual.hpp.

References ROL::PartitionedVector< Real >::get(), and ROL::Vector< Real >::zero().

template<class Real >
void ROL::InteriorPoint::PrimalDualResidual< Real >::applyJacobian ( V jv,
const V v,
const V 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 182 of file ROL_InteriorPointPrimalDualResidual.hpp.

References ROL::PartitionedVector< Real >::get(), and ROL::Vector< Real >::zero().

template<class Real >
void ROL::InteriorPoint::PrimalDualResidual< Real >::updatePenalty ( Real  mu)
inline

Definition at line 257 of file ROL_InteriorPointPrimalDualResidual.hpp.

Member Data Documentation

template<class Real >
Teuchos::RCP<OBJ> ROL::InteriorPoint::PrimalDualResidual< Real >::obj_
private

Definition at line 88 of file ROL_InteriorPointPrimalDualResidual.hpp.

template<class Real >
Teuchos::RCP<CON> ROL::InteriorPoint::PrimalDualResidual< Real >::eqcon_
private

Definition at line 89 of file ROL_InteriorPointPrimalDualResidual.hpp.

template<class Real >
Teuchos::RCP<CON> ROL::InteriorPoint::PrimalDualResidual< Real >::incon_
private

Definition at line 90 of file ROL_InteriorPointPrimalDualResidual.hpp.

template<class Real >
Teuchos::RCP<V> ROL::InteriorPoint::PrimalDualResidual< Real >::qo_
private

Definition at line 92 of file ROL_InteriorPointPrimalDualResidual.hpp.

template<class Real >
Teuchos::RCP<V> ROL::InteriorPoint::PrimalDualResidual< Real >::qs_
private

Definition at line 93 of file ROL_InteriorPointPrimalDualResidual.hpp.

template<class Real >
Teuchos::RCP<V> ROL::InteriorPoint::PrimalDualResidual< Real >::qe_
private

Definition at line 94 of file ROL_InteriorPointPrimalDualResidual.hpp.

template<class Real >
Teuchos::RCP<V> ROL::InteriorPoint::PrimalDualResidual< Real >::qi_
private

Definition at line 95 of file ROL_InteriorPointPrimalDualResidual.hpp.

template<class Real >
Real ROL::InteriorPoint::PrimalDualResidual< Real >::mu_
private

Definition at line 97 of file ROL_InteriorPointPrimalDualResidual.hpp.

template<class Real >
Teuchos::RCP<LinearOperator<Real> > ROL::InteriorPoint::PrimalDualResidual< Real >::sym_
private

Definition at line 99 of file ROL_InteriorPointPrimalDualResidual.hpp.

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

Definition at line 101 of file ROL_InteriorPointPrimalDualResidual.hpp.

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

Definition at line 102 of file ROL_InteriorPointPrimalDualResidual.hpp.

template<class Real >
const size_type ROL::InteriorPoint::PrimalDualResidual< Real >::EQUAL = 2
staticprivate

Definition at line 103 of file ROL_InteriorPointPrimalDualResidual.hpp.

template<class Real >
const size_type ROL::InteriorPoint::PrimalDualResidual< Real >::INEQ = 3
staticprivate

Definition at line 104 of file ROL_InteriorPointPrimalDualResidual.hpp.


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