Limited-Memory BFGS with Variations

This web page is a companion to:

Tamara Gibson (Kolda), Dianne P. O'Leary, and Larry Nazareth, "BFGS with Update Skipping and Varying Memory", Technical Report CS-TR-3663, Department of Computer Science, University of Maryland College Park, 1996. Also listed as Technical Report UMIACS-TR-96-49.


FORTRAN Code and CUTE Interface

The L-BFGS with variations subroutine may be used in any program. We have also included the linesearch that we used, needed blas subroutines, and a sample Makefile.

Additionally, you may want to interface L-BFGS with variations with the CUTE testing environment for optimization software. We have also included directions and extra needed files for this.

L-BFGS with variations subroutine. Documentation is given in the file.
Selected BLAS subroutines from Netlib.
MINPACK linesearch subroutine by Jorge J. More' and David J. Thuente.
A sample makefile.
Directions for interfacing lbfgsvar with CUTE.
Interface program for CUTE and lbfgsvar.
Script file for use with CUTE.
All the files listed above.

MAPLE Notebooks

The following two maple notebook files correspond to examples given in Section 2. Both examples are performed in exact arithmetic. You have the option of either downloading the original MAPLE notebooks or viewing the output text generated by the notebooks.

The first notebook implements limited-memory DFP with limited-memory constant M=1 on a simple three-dimensional quadratic function. Even after 20 iterations, the algorithm does not terminate. In contrast, limited-memory BFGS with M=1 would terminate in three iterations or less.

The second notebook implements limited-memory BFGS with limited-memory constant M=1 and skips every other update of the quasi-Newton matrix. We use a three-dimensional example and show that even after 20 iterations, the algorithm has not terminated. In contrast, full-memory BFGS with update skipping would terminate in at most seven iterations.

You may download both maple notebooks and the text in a g-zipped tar file cy clicking here.

Detailed CUTE Results

In the TR, we reported summary test results. We have made our detailed test results available here. We have included a MATLAB mat-file and some m-files to show how you might access this file.

The file results.mat is a mat-file which can be read into MATLAB by the command load results. It contains the following variables:

The following m-files are available for processing the data in the results.mat file. We also give usage statements. We assume that the matlab variable M is the M-value of 5,10,15, or 50, the variable EXP is an experiment number between 0 and 21, and the variable PROB is a problem number between 1 and 22.

Lists the problem numbers, names and sizes.
>> listprob
Lists the experiment numbers and compile line options.
>> listexp
Lists the results a particular experiment for a particular value of M.
>> expsum(M,EXP);
Compares a given experiment to L-BFGS with no options for a given value of M and graphs the results. You may also specify a particular range of problems to be considered. You must also download expsum.m to use this function.
>> basecomp(M,EXP);
Summarizes the results for a particular problem with a particular value of M.
>> probsum(M,PROB);
Ranks the algorithms according to how well they do on a particular problem for a particular value of M with respect to either iterations (1), function evaluations (2) or time (3). You must also download probsum.m to use this function.
>> rankit(M,PROB,1);
Compares an experiment for all four possible values of M and graphs the results.
>> allmbasecomp(EXP);
To download a g-zipped tar file containing all the files mentioned in this section, click here.

Maintainted by Tammy Kolda (
Last modified: Thu May 29 15:51:57 EDT 1997