ReFRACtor
FullPhysics::NLLSSolverLM Class Reference

#include <nlls_solver_lm.h>

+ Inheritance diagram for FullPhysics::NLLSSolverLM:
+ Collaboration diagram for FullPhysics::NLLSSolverLM:

Classes

class  Options
 

Public Types

enum  status_t {
  SUCCESS, CONTINUE, STALLED, ERROR,
  UNTRIED
}
 Enum type for the status of the iterative solver. More...
 

Public Member Functions

 NLLSSolverLM (const boost::shared_ptr< NLLSProblem > &p, int max_cost_function_calls, const NLLSSolverLM::Options &opt=NLLSSolverLM::Options(), double dx_tol_abs=0.000001, double dx_tol_rel=0.000001, double g_tol_abs=0.000001, double g_tol_rel=6.0555e-06, bool vrbs=false)
 Constructor. More...
 
virtual ~NLLSSolverLM ()
 Destructor. More...
 
virtual std::vector< blitz::Array< double, 1 > > accepted_points () const
 Returns a vector (std) of accepted points. More...
 
virtual void add_observer (Observer< IterativeSolver > &Obs)
 Add an observer. More...
 
void add_observer_and_keep_reference (boost::shared_ptr< Observer< IterativeSolver > > &Obs)
 Add an observer and keep a reference to it. More...
 
virtual std::vector< double > cost_at_accepted_points () const
 Returns a vector (std) of cost function values at accepted points. More...
 
virtual std::vector< blitz::Array< double, 1 > > gradient_at_accepted_points () const
 Returns a vector (std) of gradients evaluated at accepted points. More...
 
virtual int num_accepted_steps () const
 Returns the number of the accepted steps. More...
 
virtual void print (std::ostream &Os) const
 Print description of object. More...
 
virtual void print_state (std::ostream &ostr=std::cout)
 Prints solver state. More...
 
std::string print_to_string () const
 Print to string. More...
 
virtual const boost::shared_ptr< NLLSProblemproblem () const
 
virtual void remove_observer (Observer< IterativeSolver > &Obs)
 Remove an observer. More...
 
virtual void solve ()
 The method that solves the optimization problem. More...
 
virtual status_t status () const
 Returns a value of IterativeSolver::status_t type. More...
 
virtual const char *const status_str () const
 Returns the string version of the solver status. More...
 

Protected Member Functions

void add_observer_do (Observer< IterativeSolver > &Obs, IterativeSolver &t)
 Add an observer. More...
 
void add_observer_do (Observer< IterativeSolver > &Obs)
 
void clean_dead_ptr ()
 Remove any dead pointers. More...
 
virtual status_t iterate ()
 
void notify_update_do (const IterativeSolver &Self)
 Function to call to notify Observers of a state change. More...
 
void record_accepted_point (const blitz::Array< double, 1 > &point)
 Called to record an accepted point. More...
 
void record_cost_at_accepted_point (double cost)
 Called to record the cost function value at an accepted point. More...
 
void record_gradient_at_accepted_point (const blitz::Array< double, 1 > &gradient)
 For recording the gradient of the cost function evaluated at an accepted point. More...
 
void remove_observer_do (Observer< IterativeSolver > &Obs, IterativeSolver &t)
 Remove an observer. More...
 
void remove_observer_do (Observer< IterativeSolver > &Obs)
 

Static Protected Member Functions

static status_t test_dx (const Eigen::VectorXd &dx, const Eigen::VectorXd &x, double dx_tol_rel, double dx_tol_abs)
 
static status_t test_dx_abs (const Eigen::VectorXd &dx, double dx_tol_abs)
 
static status_t test_dx_rel (const Eigen::VectorXd &dx, const Eigen::VectorXd &x, double dx_tol_rel)
 
static status_t test_grad_abs (const Eigen::VectorXd &g, double g_tol_abs)
 
static status_t test_grad_rel (const Eigen::VectorXd &g, const Eigen::VectorXd &x, double cost, double g_tol_rel)
 

Protected Attributes

double CR_ratio
 
Eigen::VectorXd Dx
 
double Dx_tol_abs
 
double Dx_tol_rel
 
double G_tol_abs
 
double G_tol_rel
 
double Lambda
 
int max_cost_f_calls
 
std::list< boost::weak_ptr< Observer< IterativeSolver > > > olist
 
Options Opt
 
boost::shared_ptr< NLLSProblemP
 
std::vector< boost::shared_ptr< Observer< IterativeSolver > > > ref_list
 
status_t stat
 
bool verbose
 
Eigen::VectorXd W
 

Detailed Description

Definition at line 17 of file nlls_solver_lm.h.

Member Enumeration Documentation

◆ status_t

Enum type for the status of the iterative solver.

Enumerator
SUCCESS 

solve method called and a solution found

CONTINUE 

solve method called but did not converge to a solution

STALLED 

solve method was called but stalled

ERROR 

solve method called but an error was encountered

UNTRIED 

solve method not called yet

Definition at line 50 of file iterative_solver.h.

Constructor & Destructor Documentation

◆ NLLSSolverLM()

NLLSSolverLM::NLLSSolverLM ( const boost::shared_ptr< NLLSProblem > &  p,
int  max_cost_function_calls,
const NLLSSolverLM::Options opt = NLLSSolverLM::Options(),
double  dx_tol_abs = 0.000001,
double  dx_tol_rel = 0.000001,
double  g_tol_abs = 0.000001,
double  g_tol_rel = 6.0555e-06,
bool  vrbs = false 
)

Constructor.

Parameters
[in]pThe Nonlinear Least Squares problem
[in]max_cost_function_callsread comments on NLLSSolver::NLLSSolver(int32_t,bool)
[in]optA collection of some of the solver controlling parameters. See the comments on NLLSSolverLM::Options.
[in]dx_tol_absAn absolute tolerance on step size.
[in]dx_tol_relA relative tolerance on step size.
[in]g_tol_absAn absolute tolerance on gradient size.
[in]g_tol_relA relative tolerance on gradient size.
[in]vrbsread comments on NLLSSolver::NLLSSolver(int32_t,bool)

Definition at line 49 of file nlls_solver_lm.cc.

◆ ~NLLSSolverLM()

virtual FullPhysics::NLLSSolverLM::~NLLSSolverLM ( )
inlinevirtual

Destructor.

Definition at line 96 of file nlls_solver_lm.h.

Member Function Documentation

◆ accepted_points()

virtual std::vector< blitz::Array<double, 1> > FullPhysics::IterativeSolver::accepted_points ( ) const
inlinevirtualinherited

Returns a vector (std) of accepted points.

This method returns a std vector of accepted points in the parameter space. The initial starting point is always an accepted point. Then the second accepted point is the point obtained after taking the first accepted step from the initial (first) point. The third accepted point is the point obtained after taking the second accepted step from the second accepted point and so on.

In other words, if the initial point and all the accepted points after taking the accepted steps are recorded correctly, then

Therefore, if the recording of the accepted points is done correctly, and num_accepted_steps() returns 2, then

Returns
A vector of accepted points

Definition at line 133 of file iterative_solver.h.

◆ add_observer()

virtual void FullPhysics::IterativeSolver::add_observer ( Observer< IterativeSolver > &  Obs)
inlinevirtualinherited

Add an observer.

Implements FullPhysics::Observable< IterativeSolver >.

Definition at line 84 of file iterative_solver.h.

◆ add_observer_and_keep_reference()

void FullPhysics::Observable< IterativeSolver >::add_observer_and_keep_reference ( boost::shared_ptr< Observer< IterativeSolver > > &  Obs)
inlineinherited

Add an observer and keep a reference to it.

See the discussion in the Observer class description for details.

Definition at line 107 of file observer.h.

◆ add_observer_do() [1/2]

void FullPhysics::Observable< IterativeSolver >::add_observer_do ( Observer< IterativeSolver > &  Obs,
IterativeSolver t 
)
inlineprotectedinherited

Add an observer.

Definition at line 148 of file observer.h.

◆ add_observer_do() [2/2]

void FullPhysics::Observable< IterativeSolver >::add_observer_do ( Observer< IterativeSolver > &  Obs)
inlineprotectedinherited

Definition at line 159 of file observer.h.

◆ clean_dead_ptr()

void FullPhysics::Observable< IterativeSolver >::clean_dead_ptr ( )
inlineprotectedinherited

Remove any dead pointers.

Definition at line 196 of file observer.h.

◆ cost_at_accepted_points()

virtual std::vector<double> FullPhysics::IterativeSolver::cost_at_accepted_points ( ) const
inlinevirtualinherited

Returns a vector (std) of cost function values at accepted points.

This method returns a std vector of cost function values computed at the accepted points. In other words, if the accepted points and the cost function values at these points are recorded correctly, then

Returns
A vector of cost function values at accepted points

Definition at line 157 of file iterative_solver.h.

◆ gradient_at_accepted_points()

virtual std::vector< blitz::Array<double, 1> > FullPhysics::IterativeSolverDer::gradient_at_accepted_points ( ) const
inlinevirtualinherited

Returns a vector (std) of gradients evaluated at accepted points.

This method returns a std vector of gradients computed at the accepted points. In other words, if the accepted points and the computed gradients at these points are recorded correctly, then

Definition at line 62 of file iterative_solver_der.h.

◆ iterate()

NLLSSolver::status_t NLLSSolverLM::iterate ( )
protectedvirtual

Definition at line 245 of file nlls_solver_lm.cc.

◆ notify_update_do()

void FullPhysics::Observable< IterativeSolver >::notify_update_do ( const IterativeSolver Self)
inlineprotectedinherited

Function to call to notify Observers of a state change.

The object should pass itself to this function, so it can be passed to the Observers.

Definition at line 121 of file observer.h.

◆ num_accepted_steps()

virtual int FullPhysics::IterativeSolver::num_accepted_steps ( ) const
inlinevirtualinherited

Returns the number of the accepted steps.

Returns
Number of the accepted steps

Definition at line 96 of file iterative_solver.h.

◆ print()

virtual void FullPhysics::NLLSSolverLM::print ( std::ostream &  Os) const
inlinevirtual

Print description of object.

Reimplemented from FullPhysics::NLLSSolver.

Definition at line 126 of file nlls_solver_lm.h.

◆ print_state()

void NLLSSolverLM::print_state ( std::ostream &  ostr = std::cout)
virtual

Prints solver state.

The method prints some information about the current state of the solver and the problem, for example, the current point and the cost function value and its gradient at the current point.

Definition at line 227 of file nlls_solver_lm.cc.

◆ print_to_string()

std::string FullPhysics::Printable< IterativeSolver >::print_to_string ( ) const
inlineinherited

Print to string.

This is primarily useful for SWIG wrappers to this class, e.g. a to_s method in ruby.

Definition at line 31 of file printable.h.

◆ problem()

virtual const boost::shared_ptr<NLLSProblem> FullPhysics::NLLSSolver::problem ( ) const
inlinevirtualinherited

Definition at line 49 of file nlls_solver.h.

◆ record_accepted_point()

void FullPhysics::IterativeSolver::record_accepted_point ( const blitz::Array< double, 1 > &  point)
inlineprotectedinherited

Called to record an accepted point.

This method is called to record an accepted point. It is the responsibility of the implementer of the solve() method to record the accepted points. The accepted points must be recorded in the same order that they are achieved.

Parameters
[in]pointan accepted point in the parameter space

Definition at line 246 of file iterative_solver.h.

◆ record_cost_at_accepted_point()

void FullPhysics::IterativeSolver::record_cost_at_accepted_point ( double  cost)
inlineprotectedinherited

Called to record the cost function value at an accepted point.

This method is called to record the cost function value at an accepted point. It is the responsibility of the implementer of the solve() method to record the cost function values at the accepted points. The cost values must be recorded in the same order that they are evaluated.

Parameters
[in]costcost function value at an accepted point in the parameter space

Definition at line 269 of file iterative_solver.h.

◆ record_gradient_at_accepted_point()

void FullPhysics::IterativeSolverDer::record_gradient_at_accepted_point ( const blitz::Array< double, 1 > &  gradient)
inlineprotectedinherited

For recording the gradient of the cost function evaluated at an accepted point.

This method is called to record the gradient of the cost function evaluated at an accepted point. It is the responsibility of the implementer of the solve() method to record the gradients evaluated at the accepted points. The gradients must be recorded in the same order that they are evaluated.

Parameters
[in]gradientgradient of the cost function evaluated at an accepted point in the parameter space

Definition at line 91 of file iterative_solver_der.h.

◆ remove_observer()

virtual void FullPhysics::IterativeSolver::remove_observer ( Observer< IterativeSolver > &  Obs)
inlinevirtualinherited

Remove an observer.

Implements FullPhysics::Observable< IterativeSolver >.

Definition at line 87 of file iterative_solver.h.

◆ remove_observer_do() [1/2]

void FullPhysics::Observable< IterativeSolver >::remove_observer_do ( Observer< IterativeSolver > &  Obs,
IterativeSolver t 
)
inlineprotectedinherited

Remove an observer.

Definition at line 173 of file observer.h.

◆ remove_observer_do() [2/2]

void FullPhysics::Observable< IterativeSolver >::remove_observer_do ( Observer< IterativeSolver > &  Obs)
inlineprotectedinherited

Definition at line 181 of file observer.h.

◆ solve()

void NLLSSolverLM::solve ( )
virtual

The method that solves the optimization problem.

Read the comments on IterativeSolver::solve().

Implements FullPhysics::IterativeSolver.

Definition at line 126 of file nlls_solver_lm.cc.

◆ status()

virtual status_t FullPhysics::IterativeSolver::status ( ) const
inlinevirtualinherited

Returns a value of IterativeSolver::status_t type.

This method returns the status of the solver. The status of the solver is initialized to IterativeSolver::UNTRIED, then it must be set to one of the following values by the implemented version of solve() method:

Please, read the comments on IterativeSolver::status_t type and its possible values.

Returns
Solver status

Definition at line 190 of file iterative_solver.h.

◆ status_str()

const char *const IterativeSolver::status_str ( ) const
virtualinherited

Returns the string version of the solver status.

If the method status() returns

then status_str() will return

  • "UNTRIED",
  • "SUCCESS",
  • "CONTINUE",
  • "STALLED", or
  • "ERROR"

respectively.

Returns
Solver status in string form

Definition at line 14 of file iterative_solver.cc.

◆ test_dx()

NLLSSolver::status_t NLLSSolverLM::test_dx ( const Eigen::VectorXd &  dx,
const Eigen::VectorXd &  x,
double  dx_tol_rel,
double  dx_tol_abs 
)
staticprotected

Definition at line 86 of file nlls_solver_lm.cc.

◆ test_dx_abs()

NLLSSolver::status_t NLLSSolverLM::test_dx_abs ( const Eigen::VectorXd &  dx,
double  dx_tol_abs 
)
staticprotected

Definition at line 77 of file nlls_solver_lm.cc.

◆ test_dx_rel()

NLLSSolver::status_t NLLSSolverLM::test_dx_rel ( const Eigen::VectorXd &  dx,
const Eigen::VectorXd &  x,
double  dx_tol_rel 
)
staticprotected

Definition at line 63 of file nlls_solver_lm.cc.

◆ test_grad_abs()

NLLSSolver::status_t NLLSSolverLM::test_grad_abs ( const Eigen::VectorXd &  g,
double  g_tol_abs 
)
staticprotected

Definition at line 117 of file nlls_solver_lm.cc.

◆ test_grad_rel()

NLLSSolver::status_t NLLSSolverLM::test_grad_rel ( const Eigen::VectorXd &  g,
const Eigen::VectorXd &  x,
double  cost,
double  g_tol_rel 
)
staticprotected

Definition at line 108 of file nlls_solver_lm.cc.

Member Data Documentation

◆ CR_ratio

double FullPhysics::NLLSSolverLM::CR_ratio
protected

Definition at line 151 of file nlls_solver_lm.h.

◆ Dx

Eigen::VectorXd FullPhysics::NLLSSolverLM::Dx
protected

Definition at line 156 of file nlls_solver_lm.h.

◆ Dx_tol_abs

double FullPhysics::NLLSSolverLM::Dx_tol_abs
protected

Definition at line 144 of file nlls_solver_lm.h.

◆ Dx_tol_rel

double FullPhysics::NLLSSolverLM::Dx_tol_rel
protected

Definition at line 145 of file nlls_solver_lm.h.

◆ G_tol_abs

double FullPhysics::NLLSSolverLM::G_tol_abs
protected

Definition at line 146 of file nlls_solver_lm.h.

◆ G_tol_rel

double FullPhysics::NLLSSolverLM::G_tol_rel
protected

Definition at line 147 of file nlls_solver_lm.h.

◆ Lambda

double FullPhysics::NLLSSolverLM::Lambda
protected

Definition at line 152 of file nlls_solver_lm.h.

◆ max_cost_f_calls

int FullPhysics::IterativeSolver::max_cost_f_calls
protectedinherited

Definition at line 229 of file iterative_solver.h.

◆ olist

std::list<boost::weak_ptr<Observer<IterativeSolver > > > FullPhysics::Observable< IterativeSolver >::olist
protectedinherited

Definition at line 200 of file observer.h.

◆ Opt

Options FullPhysics::NLLSSolverLM::Opt
protected

Definition at line 149 of file nlls_solver_lm.h.

◆ P

boost::shared_ptr<NLLSProblem> FullPhysics::NLLSSolver::P
protectedinherited

Definition at line 64 of file nlls_solver.h.

◆ ref_list

std::vector<boost::shared_ptr<Observer<IterativeSolver > > > FullPhysics::Observable< IterativeSolver >::ref_list
protectedinherited

Definition at line 201 of file observer.h.

◆ stat

status_t FullPhysics::IterativeSolver::stat
protectedinherited

Definition at line 232 of file iterative_solver.h.

◆ verbose

bool FullPhysics::IterativeSolver::verbose
protectedinherited

Definition at line 231 of file iterative_solver.h.

◆ W

Eigen::VectorXd FullPhysics::NLLSSolverLM::W
protected

Definition at line 154 of file nlls_solver_lm.h.


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

Copyright © 2017, California Institute of Technology.
ALL RIGHTS RESERVED.
U.S. Government Sponsorship acknowledged.
Generated Fri Aug 24 2018 15:44:13