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...
 
virtual void setParameter (const std::vector< Real > &param)
 

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
 

Additional Inherited Members

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

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

◆ V

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

Definition at line 80 of file ROL_InteriorPointPrimalDualResidual.hpp.

◆ PV

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

Definition at line 81 of file ROL_InteriorPointPrimalDualResidual.hpp.

◆ OBJ

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

Definition at line 82 of file ROL_InteriorPointPrimalDualResidual.hpp.

◆ CON

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

Definition at line 83 of file ROL_InteriorPointPrimalDualResidual.hpp.

◆ size_type

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

◆ PrimalDualResidual()

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

◆ value()

template<class Real >
void ROL::InteriorPoint::PrimalDualResidual< Real >::value ( V c,
const V x,
Real &  tol 
)
inlinevirtual

◆ applyJacobian()

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, \form#88, 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::InteriorPoint::PrimalDualResidual< Real >::eqcon_, ROL::InteriorPoint::PrimalDualResidual< Real >::EQUAL, ROL::PartitionedVector< Real >::get(), ROL::InteriorPoint::PrimalDualResidual< Real >::incon_, ROL::InteriorPoint::PrimalDualResidual< Real >::INEQ, ROL::InteriorPoint::PrimalDualResidual< Real >::obj_, ROL::InteriorPoint::PrimalDualResidual< Real >::OPT, ROL::InteriorPoint::PrimalDualResidual< Real >::qo_, ROL::InteriorPoint::PrimalDualResidual< Real >::qs_, ROL::InteriorPoint::PrimalDualResidual< Real >::SLACK, ROL::InteriorPoint::PrimalDualResidual< Real >::sym_, and ROL::Vector< Real >::zero().

◆ updatePenalty()

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

Member Data Documentation

◆ obj_

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

◆ eqcon_

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

◆ incon_

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

◆ qo_

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

◆ qs_

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

◆ qe_

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

◆ qi_

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

◆ mu_

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

◆ sym_

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

◆ OPT

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

◆ SLACK

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

◆ EQUAL

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

◆ INEQ

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

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