User's Guide for SNOPT 7.1: a Fortran Package for Large-Scale Nonlinear Programming

SNOPT is a set of Fortran subroutines for minimizing a smooth function subject to constraints, which may include simple bounds on the variables, linear constraints and smooth nonlinear constraints. SNOPT is a general-purpose optimizer, designed to find locally optimal solutions for models involving smooth nonlinear functions. They are 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.) Ideally, users should provide gradients. Unknown components are estimated by finite differences.

SNOPT incorporates a sequential quadratic programming (SQP) method 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 there are few superbasic variables (degrees of freedom) compared to the number of variables. A problem will have few degrees of freedom 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. However, unlike previous versions of SNOPT, there are no limits on the number of superbasic variables. SNOPT requires relatively few evaluations of the problem functions. Hence it is especially effective if the objective or constraint functions are expensive to evaluate.

The source code for SNOPT is suitable for any machine with a reasonable amount of memory and a Fortran compiler. SNOPT may be called from a driver program (typically in Fortran, C or MATLAB).

Return To PEG's Home Page.