SNOPT
SNOPT is a software package for solving largescale 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.
Main features

More information available about SNOPT at the
Stanford
Systems Optimization Laboratory (SOL) pages.

See the
User's Guide for SNOPT 5.3: A Fortran Package for LargeScale
Nonlinear Programming

SNOPT is a stateoftheart solver for sparse activeset
nonlinear programming,
and very suitable in e.g. control applications and other
industrial use.

Independent tests have shown the TOMLAB implementation of SNOPT
to be very fast and robust, and for these largescale
industrial applications,
TOMLAB /SNOPT has outperformed other Fortran and C solvers.

The largescale quadratic programming sub solver in SNOPT
handles nonconvex problems and is very fast and robust.
Thus, SNOPT may also be considered for solving large QP problems.
