Armijo line search. More...
#include <ql/math/optimization/armijo.hpp>
Public Member Functions | |
ArmijoLineSearch (Real eps=1e-8, Real alpha=0.05, Real beta=0.65) | |
Default constructor. | |
Real | operator() (Problem &P, EndCriteria::Type &ecType, const EndCriteria &, Real t_ini) |
Perform line search. | |
![]() | |
LineSearch (Real=0.0) | |
Default constructor. | |
virtual | ~LineSearch () |
Destructor. | |
const Array & | lastX () |
return last x value | |
Real | lastFunctionValue () const |
return last cost function value | |
const Array & | lastGradient () |
return last gradient | |
Real | lastGradientNorm2 () const |
return square norm of last gradient | |
bool | succeed () const |
Real | update (Array ¶ms, const Array &direction, Real beta, const Constraint &constraint) |
const Array & | searchDirection () const |
current value of the search direction | |
Array & | searchDirection () |
Additional Inherited Members | |
![]() | |
Array | searchDirection_ |
current values of the search direction | |
Array | xtd_ |
new x and its gradient | |
Array | gradient_ |
Real | qt_ |
cost function value and gradient norm corresponding to xtd_ | |
Real | qpt_ |
bool | succeed_ |
flag to know if linesearch succeed | |
Armijo line search.
Let \( \alpha \) and \( \beta \) be 2 scalars in \( [0,1] \). Let \( x \) be the current value of the unknown, \( d \) the search direction and \( t \) the step. Let \( f \) be the function to minimize. The line search stops when \( t \) verifies
\[ f(x + t \cdot d) - f(x) \leq -\alpha t f'(x+t \cdot d) \]
and
\[ f(x+\frac{t}{\beta} \cdot d) - f(x) > -\frac{\alpha}{\beta} t f'(x+t \cdot d) \]
(see Polak, Algorithms and consistent approximations, Optimization, volume 124 of Applied Mathematical Sciences, Springer-Verlag, NY, 1997)