ROL
|
Provides the interface to evaluate nonlinear least squares objective functions. More...
#include <ROL_NonlinearLeastSquaresObjective_Dynamic.hpp>
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 () |
Objective () | |
virtual void | update (const Vector< Real > &x, UpdateType type, int iter=-1) |
Update objective function. More... | |
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 void | prox (Vector< Real > &Pv, const Vector< Real > &v, Real t, Real &tol) |
Compute the proximity operator. More... | |
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. 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 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. More... | |
virtual void | setParameter (const std::vector< Real > ¶m) |
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 |
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 42 of file ROL_NonlinearLeastSquaresObjective_Dynamic.hpp.
|
inline |
Constructor.
This function constructs a nonlinear least squares objective function.
[in] | con | is the nonlinear equation to be solved. |
[in] | vec | is a constraint space vector used for cloning. |
[in] | GHN | is a flag dictating whether or not to use the Gauss-Newton Hessian. |
Definition at line 60 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_.
|
inlinevirtual |
Update objective function.
This function updates the objective function at new iterations.
[in] | x | is the new iterate. |
[in] | flag | is true if the iterate has changed. |
[in] | iter | is the outer algorithm iterations count. |
Reimplemented from ROL::Objective< Real >.
Definition at line 73 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_.
|
inlinevirtual |
Compute value.
This function returns the objective function value.
[in] | x | is the current iterate. |
[in] | tol | is a tolerance for inexact objective function computation. |
Implements ROL::Objective< Real >.
Definition at line 80 of file ROL_NonlinearLeastSquaresObjective_Dynamic.hpp.
References ROL::NonlinearLeastSquaresObjective_Dynamic< Real >::c1_, and ROL::NonlinearLeastSquaresObjective_Dynamic< Real >::cdual_.
|
inlinevirtual |
Compute gradient.
This function returns the objective function gradient.
[out] | g | is the gradient. |
[in] | x | is the current iterate. |
[in] | tol | is 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 85 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_.
|
inlinevirtual |
Apply Hessian approximation to vector.
This function applies the Hessian of the objective function to the vector \(v\).
[out] | hv | is the the action of the Hessian on \(v\). |
[in] | v | is the direction vector. |
[in] | x | is the current iterate. |
[in] | tol | is a tolerance for inexact objective function computation. |
Reimplemented from ROL::Objective< Real >.
Definition at line 89 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_.
|
inlinevirtual |
Apply preconditioner to vector.
This function applies a preconditioner for the Hessian of the objective function to the vector \(v\).
[out] | Pv | is the action of the Hessian preconditioner on \(v\). |
[in] | v | is the direction vector. |
[in] | x | is the current iterate. |
[in] | tol | is a tolerance for inexact objective function computation. |
Reimplemented from ROL::Objective< Real >.
Definition at line 98 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_.
|
private |
Definition at line 44 of file ROL_NonlinearLeastSquaresObjective_Dynamic.hpp.
Referenced by ROL::NonlinearLeastSquaresObjective_Dynamic< Real >::gradient(), ROL::NonlinearLeastSquaresObjective_Dynamic< Real >::hessVec(), ROL::NonlinearLeastSquaresObjective_Dynamic< Real >::precond(), and ROL::NonlinearLeastSquaresObjective_Dynamic< Real >::update().
|
private |
Definition at line 45 of file ROL_NonlinearLeastSquaresObjective_Dynamic.hpp.
Referenced by ROL::NonlinearLeastSquaresObjective_Dynamic< Real >::gradient(), ROL::NonlinearLeastSquaresObjective_Dynamic< Real >::hessVec(), ROL::NonlinearLeastSquaresObjective_Dynamic< Real >::precond(), and ROL::NonlinearLeastSquaresObjective_Dynamic< Real >::update().
|
private |
Definition at line 46 of file ROL_NonlinearLeastSquaresObjective_Dynamic.hpp.
Referenced by ROL::NonlinearLeastSquaresObjective_Dynamic< Real >::gradient(), ROL::NonlinearLeastSquaresObjective_Dynamic< Real >::hessVec(), ROL::NonlinearLeastSquaresObjective_Dynamic< Real >::precond(), and ROL::NonlinearLeastSquaresObjective_Dynamic< Real >::update().
|
private |
Definition at line 47 of file ROL_NonlinearLeastSquaresObjective_Dynamic.hpp.
Referenced by ROL::NonlinearLeastSquaresObjective_Dynamic< Real >::gradient(), ROL::NonlinearLeastSquaresObjective_Dynamic< Real >::hessVec(), ROL::NonlinearLeastSquaresObjective_Dynamic< Real >::precond(), and ROL::NonlinearLeastSquaresObjective_Dynamic< Real >::update().
|
private |
Definition at line 48 of file ROL_NonlinearLeastSquaresObjective_Dynamic.hpp.
Referenced by ROL::NonlinearLeastSquaresObjective_Dynamic< Real >::hessVec().
|
private |
Definition at line 50 of file ROL_NonlinearLeastSquaresObjective_Dynamic.hpp.
Referenced by ROL::NonlinearLeastSquaresObjective_Dynamic< Real >::NonlinearLeastSquaresObjective_Dynamic(), ROL::NonlinearLeastSquaresObjective_Dynamic< Real >::update(), and ROL::NonlinearLeastSquaresObjective_Dynamic< Real >::value().
|
private |
Definition at line 50 of file ROL_NonlinearLeastSquaresObjective_Dynamic.hpp.
Referenced by ROL::NonlinearLeastSquaresObjective_Dynamic< Real >::hessVec(), and ROL::NonlinearLeastSquaresObjective_Dynamic< Real >::NonlinearLeastSquaresObjective_Dynamic().
|
private |
Definition at line 50 of file ROL_NonlinearLeastSquaresObjective_Dynamic.hpp.
Referenced by ROL::NonlinearLeastSquaresObjective_Dynamic< Real >::gradient(), ROL::NonlinearLeastSquaresObjective_Dynamic< Real >::hessVec(), ROL::NonlinearLeastSquaresObjective_Dynamic< Real >::NonlinearLeastSquaresObjective_Dynamic(), ROL::NonlinearLeastSquaresObjective_Dynamic< Real >::precond(), ROL::NonlinearLeastSquaresObjective_Dynamic< Real >::update(), and ROL::NonlinearLeastSquaresObjective_Dynamic< Real >::value().
|
private |
Definition at line 50 of file ROL_NonlinearLeastSquaresObjective_Dynamic.hpp.
Referenced by ROL::NonlinearLeastSquaresObjective_Dynamic< Real >::hessVec(), and ROL::NonlinearLeastSquaresObjective_Dynamic< Real >::NonlinearLeastSquaresObjective_Dynamic().