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.
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.
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.
The file results.mat is a mat-file which can be read into MATLAB by the command load results. It contains the following variables:
exp1 = '-DVARYMG=0'
size1 = 10
EXTROSNB = 1
Example: a single row of A might be ...
0 3 5 0 102 107 0.1374D+04 0.1150D-03 0.09
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.