A comparison of implementations of basic evolutionary algorithm operations in different languages

It is not usual practice in the evolutionary algorithms area to benchmark different operations in order to choose the best language for a single or multilanguage implementation. Researchers rely instead on common practice or frameworks using mainstream languages. That is why it is usual practice to choose compiled languages (namely Java or C/C++) when implementing evolutionary algorithms, without considering other languages or rejecting them outright on the basis of performance. Since there is a myriad of languages nowadays, we considered it an interesting challenge to measure their speed when performing frequent operations in evolutionary algorithms. In this paper we have tested three basic evolutionary algorithm operations over binary chromosomes: bitflip mutation, crossover and the OneMax fitness function. As a performance measure, the speed for both popular and not so popular computer languages have been used. In general, the results confirm that compiled languages scale and perform better, but also in some cases have a behaviour that is independent of the size of the chromosome. Additionally, results show that other languages, such as Go (compiled) or Python (interpreted) are fast enough for most purposes. Besides, these experiments show which of these operations are, in fact, the best for choosing an implementation language based on its performance.

[1]  Alan Edelman,et al.  Julia: A Fast Dynamic Language for Technical Computing , 2012, ArXiv.

[2]  Juan Julián Merelo Guervós,et al.  NodEO, a multi-paradigm distributed evolutionary algorithm platform in JavaScript , 2014, GECCO.

[3]  Frank Kargl,et al.  A conceptual model for event-sourced graph computing , 2015, DEBS.

[4]  John W. Eaton,et al.  GNU octave : a high-level interactive language for numerical computations : Octave version 2.0.17 (stable) , 1997 .

[5]  Lutz Prechelt,et al.  An Empirical Comparison of Seven Programming Languages , 2000, Computer.

[6]  Simon L. Peyton Jones,et al.  Report on the programming language Haskell: a non-strict, purely functional language version 1.2 , 1992, SIGP.

[7]  Rich Hickey,et al.  The Clojure programming language , 2008, DLS '08.

[8]  David H. Wolpert,et al.  No free lunch theorems for optimization , 1997, IEEE Trans. Evol. Comput..

[9]  Dmitry Namiot,et al.  On micro-services architecture , 2014 .

[10]  Enrique Alba,et al.  MALLBA: A Library of Skeletons for Combinatorial Optimisation (Research Note) , 2002, Euro-Par.

[11]  Juan Julián Merelo Guervós,et al.  Modeling browser-based distributed evolutionary computation systems , 2015, ArXiv.

[12]  Marc Parizeau,et al.  DEAP: evolutionary algorithms made easy , 2012, J. Mach. Learn. Res..

[13]  Eric Anderson,et al.  Efficiency matters! , 2010, OPSR.

[14]  Cesare Alippi,et al.  Genetic-algorithm programming environments , 1994, Computer.

[15]  Enrique Alba,et al.  An empirical time analysis of evolutionary algorithms as C programs , 2015, Softw. Pract. Exp..

[16]  Wonjae Lee,et al.  Genetic algorithm implementation in Python , 2005, Fourth Annual ACIS International Conference on Computer and Information Science (ICIS'05).

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

[18]  Enrique Alba,et al.  Time analysis of standard evolutionary algorithms as software programs , 2011, 2011 11th International Conference on Intelligent Systems Design and Applications.

[19]  Enrique Alba,et al.  The Influence of Data Implementation in the Performance of Evolutionary Algorithms , 2007, EUROCAST.

[20]  Juan Julián Merelo Guervós,et al.  Service oriented evolutionary algorithms , 2013, Soft Comput..

[21]  El-Ghazali Talbi,et al.  A software framework based on a conceptual unified model for evolutionary multiobjective optimization: ParadisEO-MOEO , 2011, Eur. J. Oper. Res..

[22]  Juan Julián Merelo Guervós,et al.  A Distributed Service Oriented Framework for Metaheuristics Using a Public Standard , 2010, NICSO.

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

[24]  Juan Julián Merelo Guervós,et al.  An Object-Oriented Library in JavaScript to Build Modular and Flexible Cross-Platform Evolutionary Algorithms , 2014, EvoApplications.

[25]  Juan Julián Merelo Guervós,et al.  A search for scalable evolutionary solutions to the game of MasterMind , 2013, 2013 IEEE Congress on Evolutionary Computation.

[26]  Christophe Rhodes,et al.  SBCL: A Sanely-Bootstrappable Common Lisp , 2008, S3.

[27]  Roberto Ierusalimschy,et al.  Lua—An Extensible Extension Language , 1996, Softw. Pract. Exp..

[28]  William B. Langdon,et al.  Evolving Regular Expressions for GeneChip Probe Performance Prediction , 2008, PPSN.

[29]  Martin Odersky,et al.  An Overview of the Scala Programming Language , 2004 .

[30]  Juan Julián Merelo Guervós,et al.  Implementation Matters: Programming Best Practices for Evolutionary Algorithms , 2011, IWANN.

[31]  Jeffrey H. Meyerson,et al.  The Go Programming Language , 2014, IEEE Softw..

[32]  Brian W. Kernighan,et al.  The Go Programming Language , 2015 .

[33]  John W. Eaton,et al.  GNU Octave manual version 3: a high-level interactive language for numerical computations , 2008 .