Who cares about implementation and precision? Peter Korošec
Introduction Algorithms Experimental environment Results Conclusion
Algorithm Differential evolution (DE) is a simple and efficient population- based heuristic for numerical optimization, introduced by Storn and Price in the 1990s. DE belongs to the class of Evolutionary algorithms (EA) inspired by the nature of evolution, meaning it is based on the idea of simulating the evolution of individuals (candidate solutions) via processes of selection, mutation and crossover.
DE Implementations There are many different implementations of DE, which are available from the Differential Evolution Homepage at www.icsi.berkeley.edu/~storn/code.html. We decided to compare three most commonly used implementations: Java code, Matlab code, and C code.
Benchmark Functions CEC 2008
Experimental Procedure Parameters: F = 0.5; Cr = 0.8; NP = 100; Benchmark functions with D = 100. For each function the experiments were conducted for 25 independent runs. The function error values Δf = f(x) - f(x*), where x* represents the optimal solution, are recorded after 5000, 50.000, and at termination after 500.000 function evaluations (FEs). For each function, the error values are ordered from best to worst and the trial mean and standard deviation are computed.
Results
Convergence Graphs
Convergence Graphs
Convergence Graphs
CEC 2008 Competition Average Errors
CEC 2008 Competition
C-coded DE
Conclusions Influence of different software implementations of the same algorithm on the quality in a numerical optimization process “DE/rand/1/bin” strategy of Differential Evolution algorithm as the case study. The algorithm was implemented in Java, Matlab, and C code. The evaluation was done on the CEC 2008 benchmark functions As a result it was established that there can be potentially non-negligible differences between different software implementations of the same Differential Evolution algorithm, especially when we have used different floating-point precisions. Where are those 10-60 errors?