ROL
Public Member Functions | Private Attributes | List of all members
ROL::NonlinearLeastSquaresObjective_Dynamic< Real > Class Template Reference

Provides the interface to evaluate nonlinear least squares objective functions. More...

#include <ROL_NonlinearLeastSquaresObjective_Dynamic.hpp>

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

Public Member Functions

 NonlinearLeastSquaresObjective_Dynamic (const Ptr< DynamicConstraint< Real >> &con, const Vector< Real > &c, const Ptr< const Vector< Real >> &uo, const Ptr< const Vector< Real >> &z, const Ptr< const TimeStamp< Real >> &ts, const bool GNH=false)
 Constructor. More...
 
void update (const Vector< Real > &u, bool flag=true, int iter=-1)
 Update objective function. More...
 
Real value (const Vector< Real > &x, Real &tol)
 Compute value. More...
 
void gradient (Vector< Real > &g, const Vector< Real > &u, Real &tol)
 Compute gradient. More...
 
void hessVec (Vector< Real > &hv, const Vector< Real > &v, const Vector< Real > &u, Real &tol)
 Apply Hessian approximation to vector. More...
 
void precond (Vector< Real > &pv, const Vector< Real > &v, const Vector< Real > &u, Real &tol)
 Apply preconditioner to vector. More...
 
- Public Member Functions inherited from ROL::Objective< Real >
virtual ~Objective ()
 
virtual Real dirDeriv (const Vector< Real > &x, const Vector< Real > &d, Real &tol)
 Compute directional derivative. More...
 
virtual void invHessVec (Vector< Real > &hv, const Vector< Real > &v, const Vector< Real > &x, Real &tol)
 Apply inverse Hessian approximation to vector. More...
 
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. More...
 
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. More...
 
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. More...
 
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. More...
 
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. More...
 
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. More...
 
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. More...
 
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. More...
 
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. More...
 
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. More...
 
virtual void setParameter (const std::vector< Real > &param)
 

Private Attributes

const Ptr< DynamicConstraint
< Real > > 
con_
 
const Ptr< const Vector< Real > > uo_
 
const Ptr< const Vector< Real > > z_
 
const Ptr< const TimeStamp
< Real > > 
ts_
 
const bool GaussNewtonHessian_
 
Ptr< Vector< Real > > c1_
 
Ptr< Vector< Real > > c2_
 
Ptr< Vector< Real > > cdual_
 
Ptr< Vector< Real > > udual_
 

Additional Inherited Members

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

Detailed Description

template<class Real>
class ROL::NonlinearLeastSquaresObjective_Dynamic< Real >

Provides the interface to evaluate nonlinear least squares objective functions.

ROL's nonlinear least squares objective function interface constructs the the nonlinear least squares objective function associated with the equality constraint \(c_n(u_{n-1},u_n,z)=0\). That is, given \(z\) and \(u_{n-1}\),

\[ J(u) = \langle \mathfrak{R} c_n(u_{n-1},u,z),c_n(u_{n-1},u,z) \rangle_{\mathcal{C}^*,\mathcal{C}} \]

where \(c_n:\mathcal{U}\times\mathcal{U}\times\mathcal{Z}\to\mathcal{C}\) and \(\mathfrak{R}\in\mathcal{L}(\mathcal{C},\mathcal{C}^*)\) denotes the Riesz map from \(\mathcal{C}\) into \(\mathcal{C}^*\).


Definition at line 76 of file ROL_NonlinearLeastSquaresObjective_Dynamic.hpp.

Constructor & Destructor Documentation

template<class Real >
ROL::NonlinearLeastSquaresObjective_Dynamic< Real >::NonlinearLeastSquaresObjective_Dynamic ( const Ptr< DynamicConstraint< Real >> &  con,
const Vector< Real > &  c,
const Ptr< const Vector< Real >> &  uo,
const Ptr< const Vector< Real >> &  z,
const Ptr< const TimeStamp< Real >> &  ts,
const bool  GNH = false 
)
inline

Constructor.

This function constructs a nonlinear least squares objective function.

Parameters
[in]conis the nonlinear equation to be solved.
[in]vecis a constraint space vector used for cloning.
[in]GHNis a flag dictating whether or not to use the Gauss-Newton Hessian.

Definition at line 94 of file ROL_NonlinearLeastSquaresObjective_Dynamic.hpp.

References ROL::NonlinearLeastSquaresObjective_Dynamic< Real >::c1_, ROL::NonlinearLeastSquaresObjective_Dynamic< Real >::c2_, ROL::NonlinearLeastSquaresObjective_Dynamic< Real >::cdual_, ROL::Vector< Real >::clone(), ROL::Vector< Real >::dual(), and ROL::NonlinearLeastSquaresObjective_Dynamic< Real >::udual_.

Member Function Documentation

template<class Real >
void ROL::NonlinearLeastSquaresObjective_Dynamic< Real >::update ( const Vector< Real > &  x,
bool  flag = true,
int  iter = -1 
)
inlinevirtual

Update objective function.

This function updates the objective function at new iterations.

Parameters
[in]xis the new iterate.
[in]flagis true if the iterate has changed.
[in]iteris the outer algorithm iterations count.

Reimplemented from ROL::Objective< Real >.

Definition at line 107 of file ROL_NonlinearLeastSquaresObjective_Dynamic.hpp.

References ROL::NonlinearLeastSquaresObjective_Dynamic< Real >::c1_, ROL::NonlinearLeastSquaresObjective_Dynamic< Real >::cdual_, ROL::NonlinearLeastSquaresObjective_Dynamic< Real >::con_, ROL::NonlinearLeastSquaresObjective_Dynamic< Real >::ts_, ROL::NonlinearLeastSquaresObjective_Dynamic< Real >::uo_, and ROL::NonlinearLeastSquaresObjective_Dynamic< Real >::z_.

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

Compute value.

This function returns the objective function value.

Parameters
[in]xis the current iterate.
[in]tolis a tolerance for inexact objective function computation.

Implements ROL::Objective< Real >.

Definition at line 114 of file ROL_NonlinearLeastSquaresObjective_Dynamic.hpp.

References ROL::NonlinearLeastSquaresObjective_Dynamic< Real >::c1_, and ROL::NonlinearLeastSquaresObjective_Dynamic< Real >::cdual_.

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

Compute gradient.

This function returns the objective function gradient.

Parameters
[out]gis the gradient.
[in]xis the current iterate.
[in]tolis a tolerance for inexact objective function computation.

The default implementation is a finite-difference approximation based on the function value. This requires the definition of a basis \(\{\phi_i\}\) for the optimization vectors x and the definition of a basis \(\{\psi_j\}\) for the dual optimization vectors (gradient vectors g). The bases must be related through the Riesz map, i.e., \( R \{\phi_i\} = \{\psi_j\}\), and this must be reflected in the implementation of the ROL::Vector::dual() method.

Reimplemented from ROL::Objective< Real >.

Definition at line 119 of file ROL_NonlinearLeastSquaresObjective_Dynamic.hpp.

References ROL::NonlinearLeastSquaresObjective_Dynamic< Real >::cdual_, ROL::NonlinearLeastSquaresObjective_Dynamic< Real >::con_, ROL::NonlinearLeastSquaresObjective_Dynamic< Real >::ts_, ROL::NonlinearLeastSquaresObjective_Dynamic< Real >::uo_, and ROL::NonlinearLeastSquaresObjective_Dynamic< Real >::z_.

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

Apply Hessian approximation to vector.

This function applies the Hessian of the objective function to the vector \(v\).

Parameters
[out]hvis the the action of the Hessian on \(v\).
[in]vis the direction vector.
[in]xis the current iterate.
[in]tolis a tolerance for inexact objective function computation.

Reimplemented from ROL::Objective< Real >.

Definition at line 123 of file ROL_NonlinearLeastSquaresObjective_Dynamic.hpp.

References ROL::NonlinearLeastSquaresObjective_Dynamic< Real >::c2_, ROL::NonlinearLeastSquaresObjective_Dynamic< Real >::cdual_, ROL::NonlinearLeastSquaresObjective_Dynamic< Real >::con_, ROL::NonlinearLeastSquaresObjective_Dynamic< Real >::GaussNewtonHessian_, ROL::Vector< Real >::plus(), ROL::NonlinearLeastSquaresObjective_Dynamic< Real >::ts_, ROL::NonlinearLeastSquaresObjective_Dynamic< Real >::udual_, ROL::NonlinearLeastSquaresObjective_Dynamic< Real >::uo_, and ROL::NonlinearLeastSquaresObjective_Dynamic< Real >::z_.

template<class Real >
void ROL::NonlinearLeastSquaresObjective_Dynamic< Real >::precond ( Vector< Real > &  Pv,
const Vector< Real > &  v,
const Vector< Real > &  x,
Real &  tol 
)
inlinevirtual

Apply preconditioner to vector.

This function applies a preconditioner for the Hessian of the objective function to the vector \(v\).

Parameters
[out]Pvis the action of the Hessian preconditioner on \(v\).
[in]vis the direction vector.
[in]xis the current iterate.
[in]tolis a tolerance for inexact objective function computation.

Reimplemented from ROL::Objective< Real >.

Definition at line 132 of file ROL_NonlinearLeastSquaresObjective_Dynamic.hpp.

References ROL::NonlinearLeastSquaresObjective_Dynamic< Real >::cdual_, ROL::NonlinearLeastSquaresObjective_Dynamic< Real >::con_, ROL::NonlinearLeastSquaresObjective_Dynamic< Real >::ts_, ROL::NonlinearLeastSquaresObjective_Dynamic< Real >::uo_, and ROL::NonlinearLeastSquaresObjective_Dynamic< Real >::z_.

Member Data Documentation

template<class Real >
const Ptr<DynamicConstraint<Real> > ROL::NonlinearLeastSquaresObjective_Dynamic< Real >::con_
private
template<class Real >
const Ptr<const Vector<Real> > ROL::NonlinearLeastSquaresObjective_Dynamic< Real >::uo_
private
template<class Real >
const Ptr<const Vector<Real> > ROL::NonlinearLeastSquaresObjective_Dynamic< Real >::z_
private
template<class Real >
const Ptr<const TimeStamp<Real> > ROL::NonlinearLeastSquaresObjective_Dynamic< Real >::ts_
private
template<class Real >
const bool ROL::NonlinearLeastSquaresObjective_Dynamic< Real >::GaussNewtonHessian_
private
template<class Real >
Ptr<Vector<Real> > ROL::NonlinearLeastSquaresObjective_Dynamic< Real >::c1_
private
template<class Real >
Ptr<Vector<Real> > ROL::NonlinearLeastSquaresObjective_Dynamic< Real >::c2_
private
template<class Real >
Ptr<Vector<Real> > ROL::NonlinearLeastSquaresObjective_Dynamic< Real >::cdual_
private
template<class Real >
Ptr<Vector<Real> > ROL::NonlinearLeastSquaresObjective_Dynamic< Real >::udual_
private

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