Systems Optimization Laboratory
Stanford, CA 94305-4121 USA
User guide for SNOPT 7:
Software for large-scale linear and quadratic programming
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
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 77, 90, or later compiler.
We recommend gfortran
(part of GCC, the GNU Compiler Collection).
The f2c translation of the SNOPT f77 source code can be used with 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.
UCSD/Stanford Optimization Software
for information about the solvers SNOPT, DNOPT, NPSOL, SQOPT, SQIC.
P. E. Gill, W. Murray, and M. A. Saunders (2018),
SNOPT 7.7 User's Guide.
P. E. Gill, W. Murray, and M. A. Saunders (2005),
SNOPT: An SQP algorithm for large-scale constrained optimization,
SIAM Review 47(1), 99-131.