ROL
ROL::ColemanLiModel< Real > Class Template Reference

Provides the interface to evaluate interior trust-region model functions from the Coleman-Li bound constrained trust-region algorithm. More...

#include <ROL_ColemanLiModel.hpp>

Inheritance diagram for ROL::ColemanLiModel< Real >:

Public Member Functions

 ColemanLiModel (Objective< Real > &obj, BoundConstraint< Real > &bnd, const Vector< Real > &x, const Vector< Real > &g, const Real stepBackMax=0.9999, const Real stepBackScale=1.0, const bool singleReflect=true, const Ptr< Secant< Real > > &secant=nullPtr, const bool useSecantPrecond=false, const bool useSecantHessVec=false)
void update (Objective< Real > &obj, BoundConstraint< Real > &bnd, const Vector< Real > &x, const Vector< Real > &g, const Ptr< Secant< Real > > &secant=nullPtr)
void setRadius (const Real del)
Real value (const Vector< Real > &s, Real &tol)
void gradient (Vector< Real > &g, const Vector< Real > &s, Real &tol)
void hessVec (Vector< Real > &hv, const Vector< Real > &v, const Vector< Real > &s, Real &tol)
void dualTransform (Vector< Real > &tv, const Vector< Real > &v)
void primalTransform (Vector< Real > &tiv, const Vector< Real > &v)
void updatePredictedReduction (Real &pred, const Vector< Real > &s)
void updateActualReduction (Real &ared, const Vector< Real > &s)
Public Member Functions inherited from ROL::TrustRegionModel< Real >
virtual ~TrustRegionModel ()
 TrustRegionModel (Objective< Real > &obj, BoundConstraint< Real > &bnd, const Vector< Real > &x, const Vector< Real > &g, const Ptr< Secant< Real > > &secant=nullPtr, const bool useSecantPrecond=false, const bool useSecantHessVec=false)
virtual void invHessVec (Vector< Real > &hv, const Vector< Real > &v, const Vector< Real > &s, Real &tol)
virtual void precond (Vector< Real > &Pv, const Vector< Real > &v, const Vector< Real > &s, Real &tol)
virtual const Ptr< const Vector< Real > > getGradient (void) const
virtual const Ptr< const Vector< Real > > getIterate (void) const
virtual const Ptr< Objective< Real > > getObjective (void) const
virtual const Ptr< BoundConstraint< Real > > getBoundConstraint (void) const
Public Member Functions inherited from ROL::ROL::Objective< Real >
virtual ~Objective ()
 Objective ()
virtual void update (const Vector< Real > &x, UpdateType type, int iter=-1)
 Update objective function.
virtual void update (const Vector< Real > &x, bool flag=true, int iter=-1)
 Update objective function.
virtual Real value (const Vector< Real > &x, Real &tol)=0
 Compute value.
virtual void gradient (Vector< Real > &g, const Vector< Real > &x, Real &tol)
 Compute gradient.
virtual Real dirDeriv (const Vector< Real > &x, const Vector< Real > &d, Real &tol)
 Compute directional derivative.
virtual void hessVec (Vector< Real > &hv, const Vector< Real > &v, const Vector< Real > &x, Real &tol)
 Apply Hessian approximation to vector.
virtual void invHessVec (Vector< Real > &hv, const Vector< Real > &v, const Vector< Real > &x, Real &tol)
 Apply inverse Hessian approximation to vector.
virtual void precond (Vector< Real > &Pv, const Vector< Real > &v, const Vector< Real > &x, Real &tol)
 Apply preconditioner to vector.
virtual void prox (Vector< Real > &Pv, const Vector< Real > &v, Real t, Real &tol)
 Compute the proximity operator.
virtual void proxJacVec (Vector< Real > &Jv, const Vector< Real > &v, const Vector< Real > &x, Real t, Real &tol)
 Apply the Jacobian of the proximity operator.
virtual std::vector< std::vector< Real > > checkGradient (const Vector< Real > &x, const Vector< Real > &d, const bool printToStream=true, std::ostream &outStream=std::cout, const int numSteps=ROL_NUM_CHECKDERIV_STEPS, const int order=1)
 Finite-difference gradient check.
virtual std::vector< std::vector< Real > > checkGradient (const Vector< Real > &x, const Vector< Real > &g, const Vector< Real > &d, const bool printToStream=true, std::ostream &outStream=std::cout, const int numSteps=ROL_NUM_CHECKDERIV_STEPS, const int order=1)
 Finite-difference gradient check.
virtual std::vector< std::vector< Real > > checkGradient (const Vector< Real > &x, const Vector< Real > &d, const std::vector< Real > &steps, const bool printToStream=true, std::ostream &outStream=std::cout, const int order=1)
 Finite-difference gradient check with specified step sizes.
virtual std::vector< std::vector< Real > > checkGradient (const Vector< Real > &x, const Vector< Real > &g, const Vector< Real > &d, const std::vector< Real > &steps, const bool printToStream=true, std::ostream &outStream=std::cout, const int order=1)
 Finite-difference gradient check with specified step sizes.
virtual std::vector< std::vector< Real > > checkHessVec (const Vector< Real > &x, const Vector< Real > &v, const bool printToStream=true, std::ostream &outStream=std::cout, const int numSteps=ROL_NUM_CHECKDERIV_STEPS, const int order=1)
 Finite-difference Hessian-applied-to-vector check.
virtual std::vector< std::vector< Real > > checkHessVec (const Vector< Real > &x, const Vector< Real > &hv, const Vector< Real > &v, const bool printToStream=true, std::ostream &outStream=std::cout, const int numSteps=ROL_NUM_CHECKDERIV_STEPS, const int order=1)
 Finite-difference Hessian-applied-to-vector check.
virtual std::vector< std::vector< Real > > checkHessVec (const Vector< Real > &x, const Vector< Real > &v, const std::vector< Real > &steps, const bool printToStream=true, std::ostream &outStream=std::cout, const int order=1)
 Finite-difference Hessian-applied-to-vector check with specified step sizes.
virtual std::vector< std::vector< Real > > checkHessVec (const Vector< Real > &x, const Vector< Real > &hv, const Vector< Real > &v, const std::vector< Real > &steps, const bool printToStream=true, std::ostream &outStream=std::cout, const int order=1)
 Finite-difference Hessian-applied-to-vector check with specified step sizes.
virtual std::vector< Real > checkHessSym (const Vector< Real > &x, const Vector< Real > &v, const Vector< Real > &w, const bool printToStream=true, std::ostream &outStream=std::cout)
 Hessian symmetry check.
virtual std::vector< Real > checkHessSym (const Vector< Real > &x, const Vector< Real > &hv, const Vector< Real > &v, const Vector< Real > &w, const bool printToStream=true, std::ostream &outStream=std::cout)
 Hessian symmetry check.
virtual std::vector< std::vector< Real > > checkProxJacVec (const Vector< Real > &x, const Vector< Real > &v, Real t=Real(1), bool printToStream=true, std::ostream &outStream=std::cout, int numSteps=ROL_NUM_CHECKDERIV_STEPS)
 Finite-difference proximity operator Jacobian-applied-to-vector check.
virtual void setParameter (const std::vector< Real > &param)

Private Member Functions

void applyD (Vector< Real > &Dv, const Vector< Real > &v)
void applyInverseD (Vector< Real > &Dv, const Vector< Real > &v)
void applyC (Vector< Real > &Cv, const Vector< Real > &v)
void constructC (void)
void constructInverseD (void)
void initialize (const Vector< Real > &x, const Vector< Real > &g)
void getScalarBounds (Real &lowerBound, Real &upperBound, const Vector< Real > &p)
Real minimize1D (Real &tau, const Real lowerBound, const Real upperBound, const Vector< Real > &p)
Real computeCauchyPoint (void)
void computeReflectiveStep (Vector< Real > &Rv, const Vector< Real > &v, const Vector< Real > &Dv)
void computeFullReflectiveStep (Vector< Real > &Rv, const Vector< Real > &v, const Vector< Real > &Dv)
Real computeAlpha (const Vector< Real > &d)
bool isStrictlyFeasibleStep (const Vector< Real > &d) const

Private Attributes

Ptr< Vector< Real > > prim_
Ptr< Vector< Real > > dual_
Ptr< Vector< Real > > hv_
Ptr< Vector< Real > > step_
Ptr< Vector< Real > > cauchyStep_
Ptr< Vector< Real > > cauchyScal_
Ptr< Vector< Real > > reflectStep_
Ptr< Vector< Real > > reflectScal_
Ptr< Vector< Real > > Dmat_
Ptr< Vector< Real > > Cmat_
Ptr< Vector< Real > > lx_
Ptr< Vector< Real > > ux_
Real TRradius_
const Real stepBackMax_
const Real stepBackScale_
const bool singleReflect_
Real sCs_
Real pred_
Elementwise::Multiply< Real > mult_
Elementwise::Divide< Real > div_

Additional Inherited Members

Protected Member Functions inherited from ROL::TrustRegionModel< Real >
void applyHessian (Vector< Real > &hv, const Vector< Real > &v, Real &tol)
void applyInvHessian (Vector< Real > &hv, const Vector< Real > &v, Real &tol)
void applyPrecond (Vector< Real > &Pv, const Vector< Real > &v, Real &tol)
Protected Member Functions inherited from ROL::ROL::Objective< Real >
const std::vector< Real > getParameter (void) const

Detailed Description

template<class Real>
class ROL::ColemanLiModel< Real >

Provides the interface to evaluate interior trust-region model functions from the Coleman-Li bound constrained trust-region algorithm.


Definition at line 26 of file ROL_ColemanLiModel.hpp.

Constructor & Destructor Documentation

◆ ColemanLiModel()

template<class Real>
ROL::ColemanLiModel< Real >::ColemanLiModel ( Objective< Real > & obj,
BoundConstraint< Real > & bnd,
const Vector< Real > & x,
const Vector< Real > & g,
const Real stepBackMax = 0.9999,
const Real stepBackScale = 1.0,
const bool singleReflect = true,
const Ptr< Secant< Real > > & secant = nullPtr,
const bool useSecantPrecond = false,
const bool useSecantHessVec = false )
inline

Member Function Documentation

◆ applyD()

template<class Real>
void ROL::ColemanLiModel< Real >::applyD ( Vector< Real > & Dv,
const Vector< Real > & v )
inlineprivate

◆ applyInverseD()

template<class Real>
void ROL::ColemanLiModel< Real >::applyInverseD ( Vector< Real > & Dv,
const Vector< Real > & v )
inlineprivate

◆ applyC()

template<class Real>
void ROL::ColemanLiModel< Real >::applyC ( Vector< Real > & Cv,
const Vector< Real > & v )
inlineprivate

◆ constructC()

template<class Real>
void ROL::ColemanLiModel< Real >::constructC ( void )
inlineprivate

◆ constructInverseD()

◆ initialize()

template<class Real>
void ROL::ColemanLiModel< Real >::initialize ( const Vector< Real > & x,
const Vector< Real > & g )
inlineprivate

◆ update()

template<class Real>
void ROL::ColemanLiModel< Real >::update ( Objective< Real > & obj,
BoundConstraint< Real > & bnd,
const Vector< Real > & x,
const Vector< Real > & g,
const Ptr< Secant< Real > > & secant = nullPtr )
inlinevirtual

◆ setRadius()

template<class Real>
void ROL::ColemanLiModel< Real >::setRadius ( const Real del)
inline

Definition at line 210 of file ROL_ColemanLiModel.hpp.

References TRradius_.

◆ value()

template<class Real>
Real ROL::ColemanLiModel< Real >::value ( const Vector< Real > & s,
Real & tol )
inlinevirtual

◆ gradient()

template<class Real>
void ROL::ColemanLiModel< Real >::gradient ( Vector< Real > & g,
const Vector< Real > & s,
Real & tol )
inlinevirtual

◆ hessVec()

template<class Real>
void ROL::ColemanLiModel< Real >::hessVec ( Vector< Real > & hv,
const Vector< Real > & v,
const Vector< Real > & s,
Real & tol )
inlinevirtual

◆ dualTransform()

template<class Real>
void ROL::ColemanLiModel< Real >::dualTransform ( Vector< Real > & tv,
const Vector< Real > & v )
inlinevirtual

Reimplemented from ROL::TrustRegionModel< Real >.

Definition at line 251 of file ROL_ColemanLiModel.hpp.

References applyInverseD().

◆ primalTransform()

◆ updatePredictedReduction()

template<class Real>
void ROL::ColemanLiModel< Real >::updatePredictedReduction ( Real & pred,
const Vector< Real > & s )
inlinevirtual

Reimplemented from ROL::TrustRegionModel< Real >.

Definition at line 341 of file ROL_ColemanLiModel.hpp.

References pred_.

◆ updateActualReduction()

template<class Real>
void ROL::ColemanLiModel< Real >::updateActualReduction ( Real & ared,
const Vector< Real > & s )
inlinevirtual

Reimplemented from ROL::TrustRegionModel< Real >.

Definition at line 345 of file ROL_ColemanLiModel.hpp.

References sCs_.

◆ getScalarBounds()

template<class Real>
void ROL::ColemanLiModel< Real >::getScalarBounds ( Real & lowerBound,
Real & upperBound,
const Vector< Real > & p )
inlineprivate

◆ minimize1D()

template<class Real>
Real ROL::ColemanLiModel< Real >::minimize1D ( Real & tau,
const Real lowerBound,
const Real upperBound,
const Vector< Real > & p )
inlineprivate

◆ computeCauchyPoint()

template<class Real>
Real ROL::ColemanLiModel< Real >::computeCauchyPoint ( void )
inlineprivate

◆ computeReflectiveStep()

template<class Real>
void ROL::ColemanLiModel< Real >::computeReflectiveStep ( Vector< Real > & Rv,
const Vector< Real > & v,
const Vector< Real > & Dv )
inlineprivate

◆ computeFullReflectiveStep()

template<class Real>
void ROL::ColemanLiModel< Real >::computeFullReflectiveStep ( Vector< Real > & Rv,
const Vector< Real > & v,
const Vector< Real > & Dv )
inlineprivate

◆ computeAlpha()

template<class Real>
Real ROL::ColemanLiModel< Real >::computeAlpha ( const Vector< Real > & d)
inlineprivate

◆ isStrictlyFeasibleStep()

template<class Real>
bool ROL::ColemanLiModel< Real >::isStrictlyFeasibleStep ( const Vector< Real > & d) const
inlineprivate

Member Data Documentation

◆ prim_

◆ dual_

template<class Real>
Ptr<Vector<Real> > ROL::ColemanLiModel< Real >::dual_
private

Definition at line 28 of file ROL_ColemanLiModel.hpp.

Referenced by hessVec(), and initialize().

◆ hv_

template<class Real>
Ptr<Vector<Real> > ROL::ColemanLiModel< Real >::hv_
private

Definition at line 28 of file ROL_ColemanLiModel.hpp.

Referenced by initialize(), minimize1D(), and value().

◆ step_

template<class Real>
Ptr<Vector<Real> > ROL::ColemanLiModel< Real >::step_
private

Definition at line 29 of file ROL_ColemanLiModel.hpp.

Referenced by initialize(), and primalTransform().

◆ cauchyStep_

template<class Real>
Ptr<Vector<Real> > ROL::ColemanLiModel< Real >::cauchyStep_
private

Definition at line 30 of file ROL_ColemanLiModel.hpp.

Referenced by computeCauchyPoint(), initialize(), and primalTransform().

◆ cauchyScal_

template<class Real>
Ptr<Vector<Real> > ROL::ColemanLiModel< Real >::cauchyScal_
private

Definition at line 30 of file ROL_ColemanLiModel.hpp.

Referenced by computeCauchyPoint(), initialize(), and primalTransform().

◆ reflectStep_

template<class Real>
Ptr<Vector<Real> > ROL::ColemanLiModel< Real >::reflectStep_
private

Definition at line 31 of file ROL_ColemanLiModel.hpp.

Referenced by constructInverseD(), initialize(), and primalTransform().

◆ reflectScal_

template<class Real>
Ptr<Vector<Real> > ROL::ColemanLiModel< Real >::reflectScal_
private

Definition at line 31 of file ROL_ColemanLiModel.hpp.

Referenced by constructInverseD(), initialize(), and primalTransform().

◆ Dmat_

template<class Real>
Ptr<Vector<Real> > ROL::ColemanLiModel< Real >::Dmat_
private

Definition at line 32 of file ROL_ColemanLiModel.hpp.

Referenced by applyD(), applyInverseD(), constructInverseD(), and initialize().

◆ Cmat_

template<class Real>
Ptr<Vector<Real> > ROL::ColemanLiModel< Real >::Cmat_
private

Definition at line 33 of file ROL_ColemanLiModel.hpp.

Referenced by applyC(), constructC(), and initialize().

◆ lx_

template<class Real>
Ptr<Vector<Real> > ROL::ColemanLiModel< Real >::lx_
private

Definition at line 34 of file ROL_ColemanLiModel.hpp.

Referenced by computeAlpha(), and initialize().

◆ ux_

template<class Real>
Ptr<Vector<Real> > ROL::ColemanLiModel< Real >::ux_
private

Definition at line 34 of file ROL_ColemanLiModel.hpp.

Referenced by computeAlpha(), and initialize().

◆ TRradius_

template<class Real>
Real ROL::ColemanLiModel< Real >::TRradius_
private

Definition at line 36 of file ROL_ColemanLiModel.hpp.

Referenced by ColemanLiModel(), getScalarBounds(), and setRadius().

◆ stepBackMax_

template<class Real>
const Real ROL::ColemanLiModel< Real >::stepBackMax_
private

Definition at line 37 of file ROL_ColemanLiModel.hpp.

Referenced by ColemanLiModel(), and primalTransform().

◆ stepBackScale_

template<class Real>
const Real ROL::ColemanLiModel< Real >::stepBackScale_
private

Definition at line 37 of file ROL_ColemanLiModel.hpp.

Referenced by ColemanLiModel(), and primalTransform().

◆ singleReflect_

template<class Real>
const bool ROL::ColemanLiModel< Real >::singleReflect_
private

Definition at line 38 of file ROL_ColemanLiModel.hpp.

Referenced by ColemanLiModel(), and primalTransform().

◆ sCs_

template<class Real>
Real ROL::ColemanLiModel< Real >::sCs_
private

Definition at line 39 of file ROL_ColemanLiModel.hpp.

Referenced by ColemanLiModel(), primalTransform(), and updateActualReduction().

◆ pred_

template<class Real>
Real ROL::ColemanLiModel< Real >::pred_
private

◆ mult_

template<class Real>
Elementwise::Multiply<Real> ROL::ColemanLiModel< Real >::mult_
private

◆ div_

template<class Real>
Elementwise::Divide<Real> ROL::ColemanLiModel< Real >::div_
private

Definition at line 42 of file ROL_ColemanLiModel.hpp.

Referenced by applyD().


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