Implementation Matters: Programming Best Practices for Evolutionary Algorithms

While a lot of attention is usually devoted to the study of different components of evolutionary algorithms or the creation of heuristic operators, little effort is being directed at how these algorithms are actually implemented. However, the efficient implementation of any application is essential to obtain a good performance, to the point that performance improvements obtained by changes in implementation are usually much bigger than those obtained by algorithmic changes, and they also scale much better. In this paper we will present and apply usual methodologies for performance improvement to evolutionary algorithms, and show which implementation options yield the best results for a certain problem configuration and which ones scale better when features such as population or chromosome size increase.

[1]  Larry Wall,et al.  Programming Perl , 1991 .

[2]  Ralf Salomon,et al.  Improving the Performance of Genetic Algorithms through Derandomization , 1997 .

[3]  Enrique Alba,et al.  Algorithm::Evolutionary, a flexible Perl module for evolutionary computation , 2010, Soft Comput..

[4]  Juan Julián Merelo Guervós,et al.  Exploring population structures for locally concurrent and massively parallel Evolutionary Algorithms , 2008, 2008 IEEE Congress on Evolutionary Computation (IEEE World Congress on Computational Intelligence).

[5]  Konstantinos G. Margaritis,et al.  On benchmarking functions for genetic algorithms , 2001, Int. J. Comput. Math..

[6]  Maarten Keijzer,et al.  Evolving Objects: A General Purpose Evolutionary Computation Library , 2001, Artificial Evolution.

[7]  Z. Merali Computational science: ...Error , 2010, Nature.

[8]  Zbigniew Michalewicz,et al.  Evolutionary Computation 2 : Advanced Algorithms and Operators , 2000 .

[9]  Rolf Drechsler,et al.  Specialized Hardware for Implementation of Evolutionary Algorithms , 2000, GECCO.

[10]  Juan-Julián Merelo,et al.  A Perl primer for evolutionary algorithm practitioners , 2010, SEVO.

[11]  César Hervás-Martínez,et al.  JCLEC: a Java framework for evolutionary computation , 2007, Soft Comput..

[12]  Pedro A. Castillo,et al.  Jeo: a framework for evolving objects in java , 2001 .

[13]  Richard Cole,et al.  Parallel merge sort , 1988, 27th Annual Symposium on Foundations of Computer Science (sfcs 1986).

[14]  Andreas Rummler,et al.  eaLib - A Java Framework for Implementation of Evolutionary Algorithms , 2001, Fuzzy Days.

[15]  Ray Paton,et al.  JavaSpaces - An Affordable Technology for the Simple Implementation of Reusable Parallel Evolutionary Algorithms , 2004, KELSI.

[16]  Schloss Birlinghoven,et al.  How Genetic Algorithms Really Work I.mutation and Hillclimbing , 2022 .

[17]  Tien-Tsin Wong,et al.  Implementation of parallel genetic algorithms on graphics processing units , 2009 .

[18]  Heinz Mühlenbein,et al.  How Genetic Algorithms Really Work: Mutation and Hillclimbing , 1992, PPSN.

[19]  Kenneth A. De Jong,et al.  Artificial Evolution , 2021, Lecture Notes in Computer Science.