SOL Logo

Systems Optimization Laboratory

Stanford University
Dept of Management Science and Engineering (MS&E)

Terman Engineering Center

Stanford, CA 94305-4026  USA

Freely Available Optimization Software


The following software packages are provided by SOL under the terms of the OSI Common Public License (CPL):


  • MINRES: Fortran and MATLAB software for sparse symmetric (definite or indefinite or singular) linear equations Ax = b. (Iterative method. The F77 version allows a positive-definite preconditioner.)

  • SYMMLQ: Fortran and MATLAB software for sparse symmetric (definite or indefinite) linear equations. (Iterative method allowing a positive-definite preconditioner.)

  • cgLanczos: MATLAB software for sparse symmetric positive-definite linear equations Ax = b. (Iterative method; Lanczos-based implementation of CG, the conjugate-gradient method. <\em Special feature: Returns an estimate of the diagonals of inv(A).)

  • LSQR: Fortran, C, and MATLAB software for sparse linear equations and sparse least squares. (Iterative method; more stable than symmetric conjugate-gradient method on normal equations.) Allows positive "damping".

  • CGLS: MATLAB software for sparse linear equations and sparse least squares. (Iterative method; more stable than symmetric conjugate-gradient method on normal equations.) Allows positive or negative "damping" (although negative is potentially unstable).

  • LUSOL: Fortran software for maintaining a sparse square or rectangular factorization A = LU. (Suitable as a basis factorization package for sparse simplex method.)

  • LUMOD: Fortran software for updating a dense square factorization L C = U when rows and columns of C are added, deleted or replaced. (Suitable as basis factorization package for dense simplex method, or for updating sparse factorizations via the Schur-complement (Block-LU) method.)

  • PDCO: MATLAB software for sparse linear programming, least squares, or convex optimization subject to linear constraints Ax=b, l<=x<=u. (Primal-dual interior method, where A may be a sparse matrix or a function for computing Ax and A'y.) In general this supersedes PDSCO (except perhaps for simple bounds x>=0).

  • PDSCO: MATLAB software for sparse linear programming, non-negative least squares, or separable convex optimization subject to constraints Ax=b, x>=0. (Primal-dual interior method, where A may be a sparse matrix or defined by a function for computing Ax and A'y. Superseded by PDCO.)


The software may alternatively be used under the terms of a BSD License (BSDlicense.txt).