User's Guide for SQOPT 7: a Fortran Package for Large-Scale Linear and Quadratic Programming


SQOPT is a set of Fortran subroutines for minimizing a convex quadratic function subject to both equality and inequality constraints. (SQOPT may also be used for linear programming and for finding a feasible point for a set of linear equalities and inequalities.) The method of SQOPT is of the two-phase, active-set type, and is related to the method used in the package QPOPT. SQOPT 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 appear in the quadratic term, or if the number of active constraints (including simple bounds) is nearly as large as the number of variables. However, unlike previous versions of SQOPT, there are no limits on the number of superbasic variables.

SQOPT is primarily intended for (but is not restricted to) large linear and quadratic problems with sparse constraint matrices. A quadratic term in the objective function is represented by a user-supplied subroutine that returns the product of the Hessian matrix with a given vector.

SQOPT is part of the SNOPT package for large-scale nonlinearly constrained optimization. SQOPT uses stable numerical methods throughout and includes a reliable basis package (for maintaining sparse LU factors of the basis matrix), a practical anti-degeneracy procedure, optional automatic scaling of the constraints, and elastic bounds on any number of constraints and variables.

The source code for SQOPT is re-entrant and is suitable for any machine with a Fortran compiler or the f2c translator. SQOPT may be called from a driver program (typically in Fortran, C, or MATLAB). SQOPT can also be used as a stand-alone package, reading data in the MPS format used by commercial mathematical programming systems.


Return To PEG's Home Page.