#include <lnsrchBT.hh>
Inheritance diagram for RVLUmin::BacktrackingLineSearchAlg< Scalar >:
Public Member Functions | |
BacktrackingLineSearchAlg (int _maxsteps=10, bool _DispFlag=false, Scalar firststep=1.0, Scalar minsteptol=numeric_limits< Scalar >::epsilon(), Scalar _eta1=0.01, Scalar _eta2=0.5, Scalar _gamma1=0.5, Scalar _gamma2=1.8, Scalar _fudge=0.9, ostream &_str=cout) | |
Constructor arguments:. | |
BacktrackingLineSearchAlg (BacktrackingLineSearchAlg< Scalar > const &bt) | |
copy constructor | |
~BacktrackingLineSearchAlg () | |
Protected Member Functions | |
virtual LineSearchAlgBase< Scalar > * | build (FunctionalEvaluation< Scalar > &fx, Vector< Scalar > const &dx, Scalar firststep) |
Subclasses RVLUmin::LineSearchAlg abstract factory: build method accepts RVL::FunctionalEvaluation (function evaluated at current estimate of solution), RVL::Vector (step), both mutable references, and first step Scalar, and returns pointer to dynamically allocated BacktrackingLineSearchAlgBase object.
Data members (initialized in constructor) define a backtracking line search:
Constraints on parameters:
Typical values: eta1=0.01, eta2=0.5, gamma1=0.5, gamma2=1.8, firststep=1.0, fudge=0.9, maxsteps=10.
The problematic choice is firststep - it depends on scales in the problem which are opaque from the point of view of this algorithm. In principle, the algorithm can recover from a bad choice of scale by either backtracking or internal doubling, but in practice this process can consume an indordinate number of function evaluations. The initial value of firststep should reflect whatever is known about the probable distance between the initial estimate of the solution and the actual optimizer.
Definition at line 422 of file lnsrchBT.hh.
RVLUmin::BacktrackingLineSearchAlg< Scalar >::BacktrackingLineSearchAlg | ( | int | _maxsteps = 10 , |
|
bool | _DispFlag = false , |
|||
Scalar | firststep = 1.0 , |
|||
Scalar | minsteptol = numeric_limits<Scalar>::epsilon() , |
|||
Scalar | _eta1 = 0.01 , |
|||
Scalar | _eta2 = 0.5 , |
|||
Scalar | _gamma1 = 0.5 , |
|||
Scalar | _gamma2 = 1.8 , |
|||
Scalar | _fudge = 0.9 , |
|||
ostream & | _str = cout | |||
) |
Constructor arguments:.
firststep | initial step, stored by RVLUmin::LineSearchAlg base class | |
minsteptol | minimum permitted step, stored by RVLUmin::LineSearchAlg base class | |
_eta1 | lower G-A parameter > 0 | |
_eta2 | upper G-A parameter > eta1 | |
_gamma1 | trust region reduction factor < 1 | |
_gamma2 | trust region expansion factor > 1, gamma1*gamma2 < 1 | |
_DispFlag | verbosity flag | |
_fudge | fraction of max step to permit | |
_maxsteps | max number of line search steps | |
_str | verbose output unit |
Definition at line 463 of file lnsrchBT.hh.
RVLUmin::BacktrackingLineSearchAlg< Scalar >::BacktrackingLineSearchAlg | ( | BacktrackingLineSearchAlg< Scalar > const & | bt | ) |
RVLUmin::BacktrackingLineSearchAlg< Scalar >::~BacktrackingLineSearchAlg | ( | ) |
Definition at line 495 of file lnsrchBT.hh.
virtual LineSearchAlgBase<Scalar>* RVLUmin::BacktrackingLineSearchAlg< Scalar >::build | ( | FunctionalEvaluation< Scalar > & | fx, | |
Vector< Scalar > const & | dx, | |||
Scalar | firststep | |||
) | [protected, virtual] |