Convex/non-convex QP and QCQP solver

The ALGLIB numerical library features an efficient, large-scale dense and sparse QP/QCQP/SOCP/conic solver available in C++, C#, Java and other languages. The solver implements numerous algorithmic improvements, has long development history and was extensively tested on various industrial optimization problems. ALGLIB is dual-licensed, with free and commercial editions.

This section covers the quadratic programming and quadratically constrained quadratic programming capabilities of ALGLIB. Additional details on its conic programming capabilities can be found in the separate section.

Contents

    1 QP/QCQP solver overview
           Features
           Programming languages supported
           Algorithms
    2 Problem types: LP, QP, QCQP
    3 QP solver API
    4 Downloads section

QP/QCQP solver overview

Features

The ALGLIB QP solver is:

Programming languages supported

ALGLIB supports many programming languages, including C++, C#, Java, Python, and others:

A distinctive feature of ALGLIB is that it provides the same API in all programming languages. This is achieved through our exclusive automatic code translation and wrapper generation technology.

Algorithms

The ALGLIB QP solver suite includes several quadratic programming algorithms:

Problem types: LP, QP, QCQP

ALGLIB supports the most general formulation of quadratic programming (QP) and quadratically constrained quadratic programming (QCQP) problems: any mix of bounded, fixed or free variables with equality, inequality, or ranged linear/quadratic constraints.

Having one of the bounds (L, U, etc) at infinity indicates that the corresponding bound is absent, while setting the lower and upper bounds equal means an equality constraint.

Depending on the problem properties, the following cases can arise:

The latter case (non-convex QCQP problems) also includes smooth QCQP problems that are effectively mixed-integer due to quadratic constraints enforcing integrality of variables. E.g., the constraint x2=1 restricts x to {-1,+1}, dividing the feasible set into disjoint regions. The GENIPM solver is not intended for such problems because it needs a smooth connected feasible set to explore. A specialized mixed integer solver should be used in such cases.

Some quadratic solvers address the challenge of mixed-integer tasks pretending to be smooth ones by prohibiting any non-convexity in the problem formulation. This approach allows them to focus on delivering reliable solutions to convex problems. At ALGLIB we take a different approach, prioritizing the provision of the most versatile and powerful solver, even if this occasionally results in its misuse.

QP solver API

The quadratic programming functionality is provided by the minqp subpackage of the Optimization package. The link above directs to the ALGLIB Reference Manual section, which includes a comprehensive description of the QP solver API with detailed comments and examples.

Download ALGLIB for C++ / C# / Java / Python / ...

ALGLIB Project offers you two editions of ALGLIB:

ALGLIB Free Edition:
+delivered for free
+offers full set of numerical functionality
+extensive algorithmic optimizations
-no multithreading
-non-commercial license

ALGLIB Commercial Edition:
+flexible pricing
+offers full set of numerical functionality
+extensive algorithmic optimizations
+high performance (SMP, SIMD)
+commercial license with support plan

Links to download sections for Free and Commercial editions can be found below:

ALGLIB 4.04.0 for C++

C++ library.
Delivered with sources.
Monolithic design.
Extreme portability.
Editions:   FREE   COMMERCIAL

ALGLIB 4.04.0 for C#

C# library with native kernels.
Delivered with sources.
VB.NET and IronPython wrappers.
Extreme portability.
Editions:   FREE   COMMERCIAL

ALGLIB 4.04.0 for Java

Java wrapper around HPC core.
Delivered with sources.
Seamless integration with Java.
Editions:   FREE   COMMERCIAL

ALGLIB 4.04.0 for Delphi

Delphi wrapper around C core.
Delivered as precompiled binary.
Compatible with FreePascal.
Editions:   FREE   COMMERCIAL

ALGLIB 4.04.0 for CPython

CPython wrapper around C core.
Delivered as precompiled binary.
Editions:   FREE   COMMERCIAL