ArmijoLineSearch Class Reference

Armijo line search. More...

`#include <ql/math/optimization/armijo.hpp>`

Inheritance diagram for ArmijoLineSearch:
[legend]

## 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.
Public Member Functions inherited from LineSearch
| 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 &params, 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

## Detailed Description

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)