A Spark implementation of the island-based parallel Differential Evolution
This is the first release of the implementation of an island-based model for the Differential Evolution algorithm presented for the first time at EvoPAR2016. It has been coded in Scala and uses Spark for being executed on commodity clusters or Cloud resources.
The following is included in this release:
Two implementations for the Differential Evolution in Scala: the sequential and the island-based model. The island-based implementation includes two enhancements to what has been presented at EvoPar:
- An optional asynchronous Local Solver (NL2SOL solver is used).
- Support for heterogeneous island configurations.
These enhancements are documented in this technical report that currently is under review after being submitted for publication.
Support for different benchmarking functions:
- Our own implementations for the Sphere, Schwefel, Rosenbrock, Rastrigin, Ackley and Griewank functions
- Functions from the BBOB benchmark: Rosenbrock (f8), Rastrigin (f15), Schaffers (f17), GriewankRosenbrock (f19), Schwefel (f20) and Gallagher (f22)
- Biological Systems models: Circadian, Mendes, Nfkb
- Your own custom function
All that is necessary to run the program in a cluster or in the AWS and Azure clouds using Spark.
Please see the README file at each directory and comments in the source files for more information.
Please see the file called LICENSE.
All publications mentioning features or use of this software are asked to credit the authors by citing the following references:
- Diego Teijeiro, Xoán C. Pardo, Patricia González, Julio R. Banga, Ramón Doallo: Implementing Parallel Differential Evolution on Spark. EvoApplications (2) 2016: 75-90 DBLP DOI
Original BBOB (
libcjavabbob.so) and Biological Systems (
libSBLib.so) libraries are not thread safe. Although we
provide a thread-safe interface to these libraries, it is a very early version not completely bug-free. To avoid
bad results or even application crashes use them with Spark configurations containing single-threaded executors only.