ROL
ROL::PrimalDualInteriorPointResidual< Real > Class Template Reference

Symmetrized form of the KKT operator for the Type-EB problem with equality and bound multipliers. More...

#include <ROL_PrimalDualInteriorPointReducedResidual.hpp>

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

Classes

class  InFill
 
class  SafeDivide
 
class  SetZeros
 

Public Member Functions

 PrimalDualInteriorPointResidual (const ROL::Ptr< PENALTY > &penalty, const ROL::Ptr< CON > &con, const V &x, ROL::Ptr< V > &scratch)
 
void update (const Vector< Real > &x, bool flag=true, int iter=-1)
 
void value (V &c, const V &x, Real &tol)
 
void applyJacobian (V &jv, const V &v, const V &x, Real &tol)
 
int getNumberFunctionEvaluations (void) const
 
int getNumberGradientEvaluations (void) const
 
int getNumberConstraintEvaluations (void) const
 
 PrimalDualInteriorPointResidual (const ROL::Ptr< OBJ > &obj, const ROL::Ptr< CON > &con, const ROL::Ptr< BND > &bnd, const V &x, const ROL::Ptr< const V > &maskL, const ROL::Ptr< const V > &maskU, ROL::Ptr< V > &scratch, Real mu, bool symmetrize)
 
void update (const Vector< Real > &x, bool flag=true, int iter=-1)
 
void value (V &c, const V &x, Real &tol)
 
void applyJacobian (V &jv, const V &v, const V &x, Real &tol)
 
void reset (const Real mu)
 
int getNumberFunctionEvaluations (void) const
 
int getNumberGradientEvaluations (void) const
 
int getNumberConstraintEvaluations (void) const
 
- 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 ROL::ParameterList PL
 
typedef Vector< Real > V
 
typedef PartitionedVector< Real > PV
 
typedef Objective< Real > OBJ
 
typedef Constraint< Real > CON
 
typedef BoundConstraint< Real > BND
 
typedef LinearOperator< Real > LOP
 
typedef InteriorPointPenalty< Real > PENALTY
 
typedef Elementwise::ValueSet< Real > ValueSet
 
typedef PV::size_type size_type
 

Private Member Functions

ROL::Ptr< VgetOptMult (V &vec)
 
ROL::Ptr< const VgetOptMult (const V &vec)
 

Private Attributes

ROL::Ptr< const Vx_
 
ROL::Ptr< const Vl_
 
ROL::Ptr< const Vzl_
 
ROL::Ptr< const Vzu_
 
ROL::Ptr< const Vxl_
 
ROL::Ptr< const Vxu_
 
const ROL::Ptr< const VmaskL_
 
const ROL::Ptr< const VmaskU_
 
ROL::Ptr< Vscratch_
 
const ROL::Ptr< PENALTYpenalty_
 
const ROL::Ptr< OBJobj_
 
const ROL::Ptr< CONcon_
 
const ROL::Ptr< BNDbnd_
 
Real mu_
 
bool symmetrize_
 
Real one_
 
Real zero_
 
int nfval_
 
int ngrad_
 
int ncval_
 
Elementwise::Multiply< Real > mult_
 
SafeDivide div_
 
SetZeros setZeros_
 
InFill inFill_
 

Static Private Attributes

static const size_type OPT = 0
 
static const size_type EQUAL = 1
 
static const size_type LOWER = 2
 
static const size_type UPPER = 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::PrimalDualInteriorPointResidual< Real >

Symmetrized form of the KKT operator for the Type-EB problem with equality and bound multipliers.

The system is symmetrized by multiplying through by

S = [ I 0 0 0 ] [ 0 I 0 0 ] [ 0 0 -inv(Zl) 0 ] [ 0 0 0 -inv(Zu) ]

Where Zl and Zu are diagonal matrices containing the lower and upper bound multipliers respectively

Infinite bounds have identically zero-valued lagrange multipliers.


Definition at line 78 of file ROL_PrimalDualInteriorPointResidual.hpp.

Member Typedef Documentation

◆ PL

template<class Real >
typedef ROL::ParameterList ROL::PrimalDualInteriorPointResidual< Real >::PL
private

◆ V

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

◆ PV

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

◆ OBJ

template<class Real >
typedef Objective< Real > ROL::PrimalDualInteriorPointResidual< Real >::OBJ
private

◆ CON

template<class Real >
typedef Constraint< Real > ROL::PrimalDualInteriorPointResidual< Real >::CON
private

◆ BND

template<class Real >
typedef BoundConstraint< Real > ROL::PrimalDualInteriorPointResidual< Real >::BND
private

◆ LOP

template<class Real >
LinearOperator<Real> ROL::PrimalDualInteriorPointResidual< Real >::LOP
private

◆ PENALTY

template<class Real >
InteriorPointPenalty<Real> ROL::PrimalDualInteriorPointResidual< Real >::PENALTY
private

◆ ValueSet

template<class Real >
typedef Elementwise::ValueSet< Real > ROL::PrimalDualInteriorPointResidual< Real >::ValueSet
private

◆ size_type

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

Constructor & Destructor Documentation

◆ PrimalDualInteriorPointResidual() [1/2]

◆ PrimalDualInteriorPointResidual() [2/2]

Member Function Documentation

◆ update() [1/2]

◆ value() [1/2]

◆ applyJacobian() [1/2]

◆ getNumberFunctionEvaluations() [1/2]

template<class Real >
int ROL::PrimalDualInteriorPointResidual< Real >::getNumberFunctionEvaluations ( void ) const
inline

◆ getNumberGradientEvaluations() [1/2]

template<class Real >
int ROL::PrimalDualInteriorPointResidual< Real >::getNumberGradientEvaluations ( void ) const
inline

◆ getNumberConstraintEvaluations() [1/2]

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

◆ getOptMult() [1/2]

◆ getOptMult() [2/2]

◆ update() [2/2]

◆ value() [2/2]

◆ applyJacobian() [2/2]

◆ reset()

◆ getNumberFunctionEvaluations() [2/2]

template<class Real >
int ROL::PrimalDualInteriorPointResidual< Real >::getNumberFunctionEvaluations ( void ) const
inline

◆ getNumberGradientEvaluations() [2/2]

template<class Real >
int ROL::PrimalDualInteriorPointResidual< Real >::getNumberGradientEvaluations ( void ) const
inline

◆ getNumberConstraintEvaluations() [2/2]

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

Member Data Documentation

◆ OPT

◆ EQUAL

◆ LOWER

◆ UPPER

◆ x_

◆ l_

◆ zl_

◆ zu_

◆ xl_

◆ xu_

◆ maskL_

◆ maskU_

◆ scratch_

◆ penalty_

◆ obj_

◆ con_

◆ bnd_

template<class Real >
const ROL::Ptr<BND> ROL::PrimalDualInteriorPointResidual< Real >::bnd_
private

Definition at line 101 of file ROL_PrimalDualInteriorPointResidual.hpp.

◆ mu_

◆ symmetrize_

◆ one_

template<class Real >
Real ROL::PrimalDualInteriorPointResidual< Real >::one_
private

◆ zero_

template<class Real >
Real ROL::PrimalDualInteriorPointResidual< Real >::zero_
private

Definition at line 121 of file ROL_PrimalDualInteriorPointResidual.hpp.

◆ nfval_

◆ ngrad_

◆ ncval_

◆ mult_

◆ div_

◆ setZeros_

template<class Real >
SetZeros ROL::PrimalDualInteriorPointResidual< Real >::setZeros_
private

Definition at line 145 of file ROL_PrimalDualInteriorPointResidual.hpp.

◆ inFill_


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