HQP  1.9.6
HQP: a solver for sparse nonlinear optimization

HQP is a solver for nonlinearly constrained large-scale optimization. It is intended for problems with sufficient regular sparsity structure. Such optimization problems arise e.g. from the numerical treatment of optimal control problems. External interfaces allow the formulation of optimization problems based on widely used model formats.


HQP (Huge Quadratic Programming) consists of mainly two parts: the actual HQP optimizer and the front-end Omuses. Both parts are designed as framework in the programming language C++.


The actual HQP optimizer treats nonlinearly constrained problems with a sequential quadratic programming (SQP) algorithm. An interior-point method is applied to the solution of convex quadratic subproblems.

The implementation is based on sparse matrix codes of the Meschach library for matrix computations in C. The matrix library was extended with additional routines for the analysis and direct solution of sparse equation systems.

The tool command language Tcl is used for selecting solver modules, configuring parameters and for controlling the execution.


The front-end Omuses provides additional support for the efficient problem formulation. This is possible thanks to the availability of great software packages that have been integrated with Omuses.

ADOL-C is exploited for the automatic differentiation and structural analysis of model equations.

Furthermore Omuses provides numerical solvers for differential equations defining constraints in dynamic optimization problems. Besides own implementations (Dopri5, Euler, GRK4, IMP, OdeTs, SDIRK, RK4), the following additional software packages are currently integrated:

  • DASPK: solution of implicit and stiff differential equations.
  • RKsuite: solution of explicit differential equations

Please note that the integrated software packages underly copyright restrictions of their respective authors. That is why the DASPK software is not included, though an interface is provided. HQP is available under the GNU Library (or Lesser) General Public License.

Interfaces for formulating optimization problems

External Model Interfaces

  • Prg_SFunctionOpt/Prg_SFunctionEst: pre-formulated dynamic optimization/estimation problems for a model accessible as Simulink S-function
  • Prg_CUTE: implementation of interface to CUTE (Constrained and Unconstrained Testing Environment): large collection of sparse nonlinear optimization problems formulated in SIF (Standard Input Format)

Internal Model Interfaces

Optimization problems can be formulated natively in C/C++. The following interfaces exist (sorted from high-level to low-level):

  • Omu_Program: dynamic optimization problems exploiting the front-end Omuses, including treatment of differential equations and automatic differentiation (see the odc subdirectory for examples). Omuses converts a dynamic optimization problem to a discrete-time optimal control problem.
  • Hqp_Docp: discrete-time optimal control problem (DOCP) for the Hqp solver, specified as Hqp_DocpSpec (see the hqp_docp subdirectory for an example). A DOCP gets converted to a large-scale non-linear optimization problem.
  • Hqp_SqpProgram: large-scale nonlinear optimization problem, as actually being treated by the HQP solver


Besides this source code documentation, there finds:

R. Franke: Omuses — a tool for the optimization of multistage systems, and HQP — a solver for sparse nonlinear optimization. Technical Report. TU Ilmenau, 1998.

Distribution and License

HQP is hosted at GitHub.

This software is free according to the conditions of the GNU LIBRARY GENERAL PUBLIC LICENSE, Version 2 (see COPYING.LIB).