Nonlinear programming

ALGLIB, a free and commercial open-source numerical library, includes a rich suite of large-scale nonlinear programming algorithms. These algorithms have undergone extensive testing across a wide range of industrial optimization problems.

It is one of the fastest open-source solver suites (see the benchmark), featuring parallel algorithms for smooth, nonsmooth and stochastic problems. It is available in C++, C#, Java and several other programming languages, in both free and commercial editions.

Contents

    1 Nonlinear programming suite overview
           Design goals
           Algorithms
           Comparison with other open-source solvers
           Programming languages supported
    2 Performance
           SIMD support
           Multithreading
    3 Downloads section

Nonlinear programming suite overview

Design goals

ALGLIB NLP suite design goals include:

Algorithms

ALGLIB includes solvers for all kinds of constrained nonlinear optimization problems:

The solvers mentioned above support all types of constraint: box, linear and nonlinear ones. Smooth solvers support parallel numerical differentiation which greatly accelerates optimization without analytic derivatives. Metaheuristics are also inherently parallelizable.

Comparison with other open-source solvers

In order to evaluate the performance and robustness of our NLP solvers we compared them with several open-source nonlinear programming solvers using a subset of the CUTEst test problem set (see the smooth NLP and metaheuristic NLP benchmark pages for a more detailed discussion).

ALGLIB is consistently faster and more robust than other open-source solvers!

Programming languages supported

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

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

Performance

SIMD support

SIMD presence greatly increases speed of the linear algebra utilized by all ALGLIB optimizers. It provides a nearly uniform speed-up for problems of any size, from tens to tens of thousands of variables. SIMD support is available in both backends (C/C++ and NET), with roughly similar performance results.

Multithreading

ALGLIB can parallelize the following parts of the optimization process:

If you are numerically differentiating an expensive target or one with many variables, or if you use a metaheuristic solver with its immense computational demands, then you can greatly benefit from the parallelism support.

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.01.0 for C++

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

ALGLIB 4.01.0 for C#

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

ALGLIB 4.01.0 for Java

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

ALGLIB 4.01.0 for Delphi

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

ALGLIB 4.01.0 for CPython

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