ROL
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 ROL::Ptr< OBJ > &obj, const ROL::Ptr< CON > &eqcon, const ROL::Ptr< CON > &incon, const V &x)
void value (V &c, const V &x, Real &tol)
void applyJacobian (V &jv, const V &v, const V &x, Real &tol)
void updatePenalty (Real mu)
 PrimalDualResidual (const ROL::Ptr< OBJ > &obj, const ROL::Ptr< CON > &eqcon, const ROL::Ptr< CON > &incon, const V &x)
void value (V &c, const V &x, Real &tol)
void applyJacobian (V &jv, const V &v, const V &x, Real &tol)
void updatePenalty (Real mu)
Public Member Functions inherited from ROL::ROL::Constraint< Real >
virtual ~Constraint (void)
 Constraint (void)
virtual void update (const Vector< Real > &x, UpdateType type, int iter=-1)
 Update constraint function.
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.
virtual void value (Vector< Real > &c, const Vector< Real > &x, Real &tol)=0
 Evaluate the constraint operator \(c:\mathcal{X} \rightarrow \mathcal{C}\) at \(x\).
virtual 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\).
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\).
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\).
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 \).
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 .
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:
void activate (void)
 Turn on constraints.
void deactivate (void)
 Turn off constraints.
bool isActivated (void)
 Check if constraints are on.
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.
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.
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.
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.
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.
virtual void setParameter (const std::vector< Real > &param)

Private Types

typedef Vector< Real > V
typedef PartitionedVector< Real > PV
typedef Objective< Real > OBJ
typedef Constraint< Real > CON
typedef PV::size_type size_type
typedef Vector< Real > V
typedef PartitionedVector< Real > PV
typedef Objective< Real > OBJ
typedef Constraint< Real > CON
typedef PV::size_type size_type

Private Attributes

ROL::Ptr< OBJobj_
ROL::Ptr< CONeqcon_
ROL::Ptr< CONincon_
ROL::Ptr< Vqo_
ROL::Ptr< Vqs_
ROL::Ptr< Vqe_
ROL::Ptr< Vqi_
Real mu_
ROL::Ptr< 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::ROL::Constraint< 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)

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 42 of file interiorpoint/ROL_InteriorPointPrimalDualResidual.hpp.

Member Typedef Documentation

◆ V [1/2]

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

◆ PV [1/2]

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

◆ OBJ [1/2]

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

◆ CON [1/2]

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

◆ size_type [1/2]

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

◆ V [2/2]

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

Definition at line 45 of file ROL_InteriorPointPrimalDualResidual.hpp.

◆ PV [2/2]

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

Definition at line 46 of file ROL_InteriorPointPrimalDualResidual.hpp.

◆ OBJ [2/2]

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

Definition at line 47 of file ROL_InteriorPointPrimalDualResidual.hpp.

◆ CON [2/2]

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

Definition at line 48 of file ROL_InteriorPointPrimalDualResidual.hpp.

◆ size_type [2/2]

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

Definition at line 51 of file ROL_InteriorPointPrimalDualResidual.hpp.

Constructor & Destructor Documentation

◆ PrimalDualResidual() [1/2]

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

◆ PrimalDualResidual() [2/2]

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

Member Function Documentation

◆ value() [1/2]

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

◆ applyJacobian() [1/2]

template<class Real>
void ROL::InteriorPoint::PrimalDualResidual< Real >::applyJacobian ( V & jv,
const V & v,
const V & x,
Real & tol )
inline

◆ updatePenalty() [1/2]

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

Definition at line 222 of file interiorpoint/ROL_InteriorPointPrimalDualResidual.hpp.

References mu_.

◆ value() [2/2]

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

◆ applyJacobian() [2/2]

template<class Real>
void ROL::InteriorPoint::PrimalDualResidual< Real >::applyJacobian ( V & jv,
const V & v,
const V & x,
Real & tol )
inline

◆ updatePenalty() [2/2]

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

Definition at line 220 of file ROL_InteriorPointPrimalDualResidual.hpp.

References mu_.

Member Data Documentation

◆ obj_

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

◆ eqcon_

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

◆ incon_

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

◆ qo_

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

◆ qs_

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

◆ qe_

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

◆ qi_

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

◆ mu_

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

◆ sym_

template<class Real>
ROL::Ptr< 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 files: