Armijo line search. More...
#include <ql/math/optimization/armijo.hpp>
 Inheritance diagram for ArmijoLineSearch:
 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)