Second-order cone programming (SOCP)

The ALGLIB numerical library includes an efficient, large-scale dense and sparse SOCP solver available in C++, C#, Java and other languages. The solver implements numerous algorithmic improvements, is actively developed and has been extensively tested on various industrial optimization problems. ALGLIB is dual-licensed, with free and commercial editions.

This section focuses on the second-order cone programming capabilities of ALGLIB. However, our solver supports optimization problems beyond SOCP, including LP, QP/QCQP as well as more general conic problems.

Contents

    1 SOCP solver overview
           Features
           Programming languages supported
    2 Second-order cone programming
           Standard problem formulation
           Extended problem formulation
    3 Conic solver API
    4 Downloads section

SOCP solver overview

Features

GENIPM, ALGLIB's conic 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.

Second-order cone programming

Standard problem formulation

The standard SOCP problem formulation is minimization of a linear objective subject to box, linear and non-overlapping second-order cone constraints:

This problem statement often appears in textbooks because it is easy to analyze and because it has nice primal-dual formulation. Despite its seeming simplicity, it allows to incorporate convex quadratic objectives and convex quadratic inequality constraints by reformulating them as second-order cone constraints. Thus, SOCP includes LP and convex QP/QCQP problem classes. However, it also supports nonlinearities beyond ones provided by QP/QCQP.

The standard SOCP problem is always convex, hence it always has a global solution that can be efficiently found using interior point methods.

Extended problem formulation

ALGLIB natively supports one of the most general and powerful formulations of a conic programming problem, extending the basic formulation above with quadratic terms and more flexible conic constraints:

A User Guide section about conic programming discusses general quadratic/conic formulation, including questions like various cone types support by ALGLIB and handling of non-convex problems. Here we focus on several important takeaways for a convex conically constrained case:

Conic solver API

The QP/conic 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/conic solver API with detailed comments and examples.

This article is licensed for personal use only.

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