Benchmark of open-source metaheuristic solvers

Differential Evolution (DE) is a powerful method of derivative-free global optimization. The ALGLIB numerical library includes GDEMO - one of the best open-source implementations of differential evolution available in C++, C#, Java and other languages under free and commercial licenses. The solver is robust, parallelized and capable of efficiently handling unconstrained and constrained problems with box, linear and nonlinear constraints.

This article compares GDEMO with other open-source metaheuristic solvers, including both Differential Evolution solvers and other similar algorithms. An overview of the ALGLIB solver itself is provided on another page.

Benchmark setup

Solvers compared: the following solvers were chosen for comparison:

All solvers are used with default parameters in a single-threaded mode. Whilst ALGLIB (and some other solvers tested) supports parallelism, for the simplicity of comparison we used a single-threaded mode in this benchmark.

Test set: a small-dimensional subset (up to 10 vars, up to 20 constraints) of the CUTEst set. Because support for constrained optimization strongly varies between packages (ALGLIB is the most powerful one in this regard), we reduced problems to unconstrained ones by adding an L1 penalty.

Measurement methodology: all solvers were run until either an evaluation budget of 50000 simplex gradients equivalents (a batch of N+1 target evaluations) or a time budget of 30 seconds was exhausted.

The solver running time is defined as a point in its evaluation history where the best value found so far was within ε=0.01 from the global minimum. The global minimum is defined as the best value found by all solvers. If the solver failed to converge to the global minimum, its running time is equal to .

The median running time over entire dataset is used as a measure of the quality. Using median instead of mean allows us to easily deal with infinite running times (failures) as long as the solver fails in less than 50% of cases.

Benchmark result

ALGLIB Differential Evolution is slightly better than Pymoo's Evolutionary Strategy and significantly better than Pymoo's own Differential Evolution. SciPy implementation severely lags behind.

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

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

ALGLIB 4.03.0 for C#

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

ALGLIB 4.03.0 for Java

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

ALGLIB 4.03.0 for Delphi

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

ALGLIB 4.03.0 for CPython

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