LineSearches.jl
A line search toolbox written in Julia.
Introduction
LineSearches
provides a collection of line search routines for optimization and nonlinear solvers. The package can be used on its own, but it also provides extra supporting functionality for Optim.jl and NLsolve.jl.
Available line search algorithms
HagerZhang
(Taken from the Conjugate Gradient implementation by Hager and Zhang, 2006)MoreThuente
(From the algorithm in More and Thuente, 1994)BackTracking
(Described in Nocedal and Wright, 2006)StrongWolfe
(Nocedal and Wright)Static
(Takes the proposed initial step length.)
Available initial step length procedures
The package provides some procedures to calculate the initial step length that is passed to the line search algorithm, currently specialized to be used with Optim and NLsolve.
InitialPrevious
(Use the step length from the previous optimization iteration)InitialStatic
(Use the same initial step length each time)InitialHagerZhang
(Taken from Hager and Zhang, 2006)InitialQuadratic
(Propose initial step length based on a quadratic interpolation)InitialConstantChange
(Propose initial step length assuming constant change in step length)
Installation
To install, simply run the following in the Julia REPL:
Pkg.add("LineSearches")
and then run
using LineSearches
to load the package.
References
- W. W. Hager and H. Zhang (2006) "Algorithm 851: CG_DESCENT, a conjugate gradient method with guaranteed descent." ACM Transactions on Mathematical Software 32: 113-137.
- Moré, Jorge J., and David J. Thuente. "Line search algorithms with guaranteed sufficient decrease." ACM Transactions on Mathematical Software (TOMS) 20.3 (1994): 286-307.
- Nocedal, Jorge, and Stephen Wright. "Numerical optimization." Springer Science & Business Media, 2006.