GlobiPack
Version of the Day
|
Base class for 1D linearsearch algorithms. More...
#include <GlobiPack_LineSearchBase.hpp>
Public Member Functions | |
virtual bool | requiresBaseDeriv () const =0 |
Determines if the linesearch algorithm requires the base derivative at Dphi(0) or not. More... | |
virtual bool | requiresDerivEvals () const =0 |
Determines if the linesearch algorithm requires that Dphi(alpha) can be computed or not. More... | |
virtual bool | doLineSearch (const MeritFunc1DBase< Scalar > &phi, const PointEval1D< Scalar > &point_k, const Ptr< PointEval1D< Scalar > > &point_kp1, const Ptr< int > &numIters) const =0 |
Called to perform a linesearch. More... | |
Base class for 1D linearsearch algorithms.
ToDo: Finish Documentation!
Definition at line 62 of file GlobiPack_LineSearchBase.hpp.
|
pure virtual |
Determines if the linesearch algorithm requires the base derivative at Dphi(0)
or not.
Implemented in GlobiPack::BrentsLineSearch< Scalar >, and GlobiPack::ArmijoPolyInterpLineSearch< Scalar >.
|
pure virtual |
Determines if the linesearch algorithm requires that Dphi(alpha)
can be computed or not.
Implemented in GlobiPack::BrentsLineSearch< Scalar >, and GlobiPack::ArmijoPolyInterpLineSearch< Scalar >.
|
pure virtual |
Called to perform a linesearch.
phi | [in] The merit function object that will compute the merit function value phi(alpha) and/or derivative Dphi(alpha) at different points |
point_k | [in] The evaluation of the merit function and optionally its derivative at |
point_kp1 | [in/out] On input, |
Preconditions:
point_k.alpha == 0.0
point_k.phi != PointEval1D<Scalar>::valNotGiven()
[
this->requiresBaseDeriv()==true
] point_k.Dphi != PointEval1D<Scalar>::valNotGiven()
[
this->requiresBaseDeriv()==true
] point_k.Dphi < 0.0
(throw Exceptions::NotDescentDirection
)
[
this->requiresDerivEvals()==true
] phi.supportsDerivEvals()==true
!is_null(point_kp1)
point_kp1->phi != PointEval1D<Scalar>::valNotGiven()
[
this->requiresDerivEvals()==true
] point_kp1->Dphi != PointEval1D<Scalar>::valNotGiven()
true
for successful line search or false
for a line search failure.This function computes the approximate minimum to 1D merit function phi(alpha)
. More specifically the following problem is approximately solved:
min phi(alpha) s.t. alpha = [0, alpha_upper]<br>
For many lineserach algorithms, if the initial
point_kp1->alpha
satisfies the internally defined descent requirement, then it will typically be choosen over smaller values of point_kp1->alpha
that may result in a greater reduction in the given merit function. Other linesearch implementions will actually seek an approximate minimizer.
If the maximum number of iterations is exceeded without finding an acceptable point, then the subclass object will return
false
and will return values of point_kp1->alpha
and point_kp1->phi
will be for the lowest value of phi_kp1 = phi(alpha_k)
found. In this case, the last call to phi(alpha_k)
will be this best value of phi_kp1
.
Implemented in GlobiPack::BrentsLineSearch< Scalar >, and GlobiPack::ArmijoPolyInterpLineSearch< Scalar >.