bgranzow / L-BFGS-B

A pure Matlab implementation of L-BFGS-B (LBFGSB)
MIT License
57 stars 15 forks source link

L-BFGS-B

A pure Matlab implementation of the L-BFGS-B algorithm.

Introduction

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

Motivation

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.

Background