User’s Guide For Snopt Version 6, A Fortran Package for Large-Scale Nonlinear Programming∗

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.

[1]  A. Conn Constrained Optimization Using a Nondifferentiable Penalty Function , 1973 .

[2]  Michael A. Saunders,et al.  Large-scale linearly constrained optimization , 1978, Math. Program..

[3]  Nesa L'abbe Wu,et al.  Linear programming and extensions , 1981 .

[4]  Philip E. Gill,et al.  Practical optimization , 1981 .

[5]  Michael A. Saunders,et al.  A projected Lagrangian algorithm and its implementation for sparse nonlinear constraints , 1982 .

[6]  Robert Fourer,et al.  Solving staircase linear programs by the simplex method, 1: Inversion , 1982, Math. Program..

[7]  Robert Fourer,et al.  Solving staircase linear programs by the simplex method, 2: Pricing , 1983, Math. Program..

[8]  Michael A. Saunders,et al.  User''s guide for NPSOL (Ver-sion 4.0): A FORTRAN package for nonlinear programming , 1984 .

[9]  P. Gill,et al.  Some theoretical properties of an augmented lagrangian merit function , 1986 .

[10]  P. Gill,et al.  Maintaining LU factors of a general sparse matrix , 1987 .

[11]  Michael A. Saunders,et al.  A practical anti-cycling procedure for linearly constrained optimization , 1989, Math. Program..

[12]  S. I. Feldman,et al.  A Fortran to C converter , 1990, FORF.

[13]  S. K. Eldersveld Large-scale sequential quadratic programming algorithms , 1992 .

[14]  Philip E. Gill,et al.  Users Guide for SnadiOpt: A Package Adding Automatic Differentiation to Snopt , 2001, ArXiv.

[15]  Michael A. Saunders,et al.  SNOPT: An SQP Algorithm for Large-Scale Constrained Optimization , 2002, SIAM J. Optim..