**SNOPT** is a FORTRAN Package for
large-scale nonlinear programming, developed by Philip
Gill (University of California, San Diego) and Walter
Murray and Michael Saunders (Systems
Optimization Laboratory, Stanford University, Stanford).

SNOPT is a general-purpose system for solving optimization problems involving many variables and constraints. 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 that
obtains search directions from a sequence of quadratic programming subproblems.
Each **QP** subproblem minimizes a quadratic
model of a certain Lagrangian function subject to a linearization of the
constraints. An
augmented Lagrangian merit function is reduced along each search direction
to ensure convergence from any starting point.

**SNOPT** is most efficient if only
some of the variables enter nonlinearly, or if the number of active constraints
(including simple bounds) is nearly as large as the number of variables.
**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 for **SNOPT** is
suitable for any machine with a Fortran compiler. **SNOPT** may
be called from a driver program (typically in Fortran, C or MATLAB).

**SNOPT** can also be used as a
stand-alone package, reading data in the **MPS**
format used by commercial mathematical programming systems.

Keywords: Nonlinear programming, constrained optimization, nonlinear
constraints, **SQP** methods, limited-storage
quasi-Newton updates, Fortran software.