User’s Guide for SNOPT Version 7:
Software for
Large-Scale Nonlinear Programming∗
Philip E. GILL
Department of Mathematics
University of California, San Diego, La Jolla, CA 92093-0112, USA
Walter MURRAY and Michael A. SAUNDERS
Systems Optimization Laboratory
Department of Management Science and Engineering
Stanford University, Stanford, CA 94305-4026, USA
May 30, 2006
Abstract
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 di-
rections 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
(or the f2c translator and a C compiler). SNOPT may be called from a driver program
in Fortran, C, or Matlab. It can also be used as a stand-alone package, reading data
in the MPS format used by commercial mathematical programming systems.
1. Introduction
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 of the form
NP minimize f0 (x)
x
x
subject to l ≤ f (x) ≤ u,
AL x
where x is an n-vector of variables, l and u are constant lower and upper bounds, f0 (x) is
a smooth scalar objective function, AL is a sparse matrix, and f (x) is a vector of smooth
nonlinear constraint functions {fi (x)}. An optional parameter Maximize may specify that
f0 (x) should be maximized instead of minimized.
Ideally, the first derivatives (gradients) of f0 (x) and fi (x) should be known and coded
by the user. If only some of the gradients are known, SNOPT estimates the missing ones by
finite differences.
Upper and lower bounds are specified for all variables and constraints. The jth constraint
may be defined as an equality by setting lj = uj . If certain bounds are not present, the
associated elements of l or u may be set to special values that are treated as −∞ or +∞.
Free variables and free constraints (“free rows”) have both bounds infinite.
1.1. Problem types
If f0 (x) is linear and f (x) is absent, NP is a linear program (LP) and SNOPT applies the
primal simplex method [2]. Sparse basis factors are maintained by LUSOL [12] as in MINOS
[18].
If only the objective is nonlinear, the problem is linearly constrained (LC) and tends to
solve more easily than the general case with nonlinear constraints (NC). For both nonlinear
cases, SNOPT applies a sparse sequential quadratic programming (SQP) method [8], using
limited-memory quasi-Newton approximations to the Hessian of the Lagrangian. The merit
function for steplength control is an augmented Lagrangian, as in the dense SQP solver
NPSOL [11, 14].
In general, SNOPT requires less matrix computation than NPSOL and fewer evaluations
of the functions than the nonlinear algorithms in MINOS [16, 17]. It is suitable for nonlinear
problems with thousands of constraints and variables, and 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). However, unlike previous versions of SNOPT, there is no
limit on the number of degrees of freedom.
1.2. Implementation
SNOPT is implemented as a library of Fortran 77 subroutines. The source code is compatible
with all known Fortran 77, 90, and 95 compilers, and can be converted to C code by the
f2c translator [4] included with the distribution.
All routines in SNOPT are intended to be re-entrant (as long as the compiler allocates
local variables dynamically). Hence they may be used in a parallel or multi-threaded envi-
ronment. They may also be called recursively.
The benefits of buying summaries with Stuvia:
Guaranteed quality through customer reviews
Stuvia customers have reviewed more than 700,000 summaries. This how you know that you are buying the best documents.
Quick and easy check-out
You can quickly pay through credit card or Stuvia-credit for the summaries. There is no membership needed.
Focus on what matters
Your fellow students write the study notes themselves, which is why the documents are always reliable and up-to-date. This ensures you quickly get to the core!
Frequently asked questions
What do I get when I buy this document?
You get a PDF, available immediately after your purchase. The purchased document is accessible anytime, anywhere and indefinitely through your profile.
Satisfaction guarantee: how does it work?
Our satisfaction guarantee ensures that you always find a study document that suits you well. You fill out a form, and our customer service team takes care of the rest.
Who am I buying these notes from?
Stuvia is a marketplace, so you are not buying this document from us, but from seller 1097434525U. Stuvia facilitates payment to the seller.
Will I be stuck with a subscription?
No, you only buy these notes for $3.99. You're not tied to anything after your purchase.