Armijo line search. More...
#include <ql/math/optimization/armijo.hpp>
Inheritance diagram for ArmijoLineSearch: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 &, const Real t_ini) |
| Perform line search. | |
Public Member Functions inherited from LineSearch | |
| LineSearch (Real=0.0) | |
| Default constructor. | |
| virtual | ~LineSearch () |
| Destructor. | |
| const Array & | lastX () |
| return last x value | |
| Real | lastFunctionValue () |
| return last cost function value | |
| const Array & | lastGradient () |
| return last gradient | |
| Real | lastGradientNorm2 () |
| return square norm of last gradient | |
| bool | succeed () |
| 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 | |
Protected Attributes inherited from LineSearch | |
| 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)