SNOPT is a software package for solving large-scale optimization problems (linear and nonlinear programs). It is especially effective for nonlinear problems whose functions and gradients are expensive to evaluate. The functions should be smooth but need not be convex.
The solution obtained from SNOPT will be a local optimum (which may or may not be a global optimum).
If some of the gradients are unknown, they will either be estimated by finite differences directly by SNOPT,
or by any of the five methods available in Tomlab. Automatic differentiation is also possible, if installing the
AD package MAD, available for Matlab and known to be working with Tomlab. Infeasible problems are treated methodically via elastic bounds. SNOPT allows the nonlinear constraints to be violated (if necessary) and minimizes the sum of such violations.
For large problems, efficiency is improved if only some of the variables enter nonlinearly, or if the number of active constraints is nearly as large as the number of variables (i.e., if there are few degrees of freedom at a solution). SNOPT can accommodate problems with many degrees of freedom (perhaps one or two thousand), but a few hundred or less is preferable.
SNOPT is highly effective for problems with a nonlinear objective function and large numbers of sparse linear constraints.
More information available about SNOPT at the
Systems Optimization Laboratory (SOL) pages.
User's Guide for SNOPT 5.3: A Fortran Package for Large-Scale
SNOPT is a state-of-the-art solver for sparse active-set
and very suitable in e.g. control applications and other
Independent tests have shown the TOMLAB implementation of SNOPT
to be very fast and robust, and for these large-scale
TOMLAB /SNOPT has outperformed other Fortran and C solvers.
The large-scale quadratic programming sub solver in SNOPT
handles non-convex problems and is very fast and robust.
Thus, SNOPT may also be considered for solving large QP problems.