A pure Matlab implementation of the L-BFGS-B algorithm.
The L-BFGS-B algorithm is a limited memory quasi-Newton, gradient based optimzation algorithm to solve problems of the form:
minimize f(x)
such that l <= x <= u
The L-BFGS-B algorithm uses a limited memory BFGS
representation of the Hessian matrix, making it well-suited
for optimization problems with a large number of design
variables. Many wrappers (C/C++, Matlab, Python, Julia) to
the original L-BFGS-B Fortran implementation exist, but a
pure Matlab implementation of the algorithm (as far as I
could tell) did not exist up to this point. This is likely due
to performance concerns. Nevertheless, this single file
implementation (LBFGS.m
) of the L-BFGS-B algorithm
seeks to provide Matlab users a convenient way to
optimize bound-constrained problems with the L-BFGS-G
algorithm without installing third-party software.
- The original L-BFGS-B paper
- The original L-BFGS-B fortran implementation
- Numerical optimization fundamentals