QPSOL – A Quadratic Programming Solver


QPSOL is designed to solve sparse and large-scale strictly convex quadratic programs. Quadratic optimization problems arise in many applications in fincance and economy, e.g. portfolio optimization, data classification with support vector machines, assignment problems, and linear regression problems, and as subproblems in nonlinear programming methods, e.g. sequential quadratic programming (SQP). QPSOL is implemented in Fortran 95 and follows a modular architecture with the possibility to add user defined routines for solving linear systems.

QPSOL offers two different methods:
  • Primal-dual interior point solver with Mehrotra predictor corrector step based on the paper "Object-oriented software for quadratic programming", ACM Transactions on Mathematical Software (TOMS), Volume 29 (1), 2003, by E. M. Gertz and S. J. Wright.
  • Globalized nonsmooth Newton method
For each method several user options exist:
  • Interfaces to the state-of-the-art linear equation solvers MA57, MA86, PARDISO, SuperLU, MUMPS, WSMP exist.
    The standardized linear equation solver interface of QPSOL allows to link user defined linear equation solvers in a straightforward way. An iterative refinement option is available.
  • Iterative methods for linear equations are available. Currently, CGNE, CGNR, CGS, and BiCGSTAB are implemented.
    The standardized iterative solver interface allows to add user defined iterative solvers in a straightforward way.
  • A standard constraint preconditioner is available and user defined preconditioners can be incorporated.
  • A constraint regularization mode is available.
  • Automatic scaling of the QP data itself and/or automatic scaling of the arising linear systems can be performed.
  • Box constraints are treated explicitly.
  • A warm start option for repeated calls to QPSOL with neighbouring QP problems is available.


The development of QPSOL was funded by the German Aerospace Center (DLR) under the contract "Sparse NLP Solver" (BMWi 50JR0689) and the European Space Agency (ESA) under the contract "Non-Linear Programming (NLP) Solver for Sparse Trajectory Optimization" (ESA C21293).

Special thanks to all major contributors to the software: Benjamin Frank, Matthias Gerdts, Martin Kunkel, Vasco Niendorf, Eggert Rose and the team of Prof. Dr. Christof Büskens from the University of Bremen.

Contact and further information

For specific questions concerning QPSOL please contact Prof. Dr. Matthias Gerdts.