[Home]   [  News]   [  Events]   [  People]   [  Research]   [  Education]   [Visitor Info]   [UCSD Only]   [Admin]
Home > Research > Publications > Abstract
Search this site:

Randolph E. Bank
Philip E. Gill
Michael Holst

Administrative Contact:
Jennifer Trefftzs

Office: AP&M 7409
Phone: (858)534-9056
Fax: (858)534-5273
E-mail: jtrefftzs@ucsd.edu
User's Guide for SNOPT Version 7.7: Software for Large-Scale Nonlinear Programming

by Philip E. Gill, Walter Murray, Michael A. Saunders, Elizabeth Wong


SNOPT is a general-purpose system for constrained optimization. It minimizes a linear or nonlinear function subject to bounds on the variables and sparse linear or nonlinear constraints. It is suitable for large-scale linear and quadratic programming and for linearly constrained optimization, as well as for general nonlinear programs. SNOPT finds solutions that are locally optimal, and ideally any nonlinear functions should be smooth and users should provide gradients. It is often more widely useful. For example, local optima are often global solutions, and discontinuities in the function gradients can often be tolerated if they are not too close to an optimum. Unknown gradients are estimated by finite differences. SNOPT uses a sequential quadratic programming (SQP) algorithm. Search directions are obtained from QP subproblems that minimize a quadratic model of the Lagrangian function subject to linearized constraints. An augmented Lagrangian merit function is reduced along each search direction to ensure convergence from any starting point. On large problems, SNOPT is most efficient if only some of the variables enter nonlinearly, or there are relatively few degrees of freedom at a solution (i.e., many constraints are active). SNOPT requires relatively few evaluations of the problem functions. Hence it is especially effective if the objective or constraint functions (and their gradients) are expensive to evaluate. The source code is re-entrant and suitable for any machine with a Fortran compiler. SNOPT may be called from a driver program in Fortran, Matlab, or C/C++.

UCSD-CCoM-19-01.pdf   February 2019