From Spinach Documentation Wiki
Jump to: navigation, search

This function finds an appropriate step length from a given search direction at a current iterate. The bracket-section line search based on fminlbfgs.m code from D. Kroon, University of Twente (Nov 2010).


    [alpha,fx_1,gfx_1,exitflag,data]=linesearch(cost_function, d_0, x_0, fx_0, gfx_0, data, optim)


Performs a line search to find an appropriate step length called from within a given optimisation algorithm, i.e. fminnewton.m. This function generally assumes cheap gradients. There are currently three line-search methods from which to chose: a Newton-step (step length = 1, equivalent to no line-search); backtracking line-search; bracketing and sectioning with a cubic interpolation.


    cost_function     - function handle to the objective function.
    d_0               - current search direction
    x_0               - current objective (waveform)
    fx_0              - current objective function value at x_0
    gfx_0             - current gradient at x_0
    data              - data structure inherited from fminnewton.m
    optim             - optim structure inherited from fminnewton.m,
                        contains tolerances and line-search options.


    alpha             - step length
    fx_1              - new objective function value (if alpha is not the Newton-step)
    gfx_1             - new gradient (if alpha is not the Newton-step)
    exitflag          - exit flag that is empty if no errors were encountered.
                        If an error was encountered, the codes produced are:
                            -2 - Line search cannot find an acceptable point along the current search
                             2 - Change in x was smaller than the specified tolerance, optim.tol_x.
                             3 - Change in gradient norm less than specified tolerance, optim.tol_gfx.
    data              - data structure with diagnostics from the line-search.


The bracket-section line-search is the default. It is also the most accurate and the most expensive - this generally assumes cheap gradient calculation (e.g. from GRAPE. The newton-step is effectively no line-search, and should only be used with a stable Newton-Raphson method. The backtracking line-search is useful and quite effective for a Newton-Raphson optimisation.

See also


Version 1.9, authors: David Goodwin