Soft Computing

, Volume 14, Issue 10, pp 1091–1109 | Cite as

Algorithm::Evolutionary, a flexible Perl module for evolutionary computation

  • Juan Julián Merelo GuervósEmail author
  • Pedro A. Castillo
  • Enrique Alba
Original Paper


This paper describes Algorithm::Evolutionary ( A::E ), a Perl module released under an open source license and designed for the exploration and exploitation of evolutionary algorithms. We describe the design decisions taken to enhance flexibility, how performance was improved by using several implementation tweaks, and what kind of design patterns were applied for its development. This work also tries to dispel the myth of low performance of scripting languages by comparing it with a state-of-the-art library (ECJ) written in Java. Besides, we are interested in assessing its efficiency in several possible evolutionary settings, finding out what kind of behavior we can expect, and what can be done to improve it. Applications already written using A::E are also described, along with how it can be used to create new operators. Finally, some conclusions are drawn from the design experience.


Evolutionary algorithms Evolutionary computation Perl CPAN Frameworks Design patterns 



This paper has been funded in part by the Spanish MICYT projects NoHNES (Spanish Ministerio de Educación y Ciencia - TIN2007-68083) and TIN2008-06491-C04-01 and the Junta de Andalucía P06-TIC-02025 and P07-TIC-03044. We are also grateful to those who have contributed patches and code to A::E , too numerous to mention, but fully acknowledged in the general page for the library (found at We are also very grateful to the editor and anonymous reviewers of the first versions of this paper, which have contributed to improve it greatly.


  1. Adam K (2008) Microsoft partners with Strawberry Perl to improve the CPAN.∼Alias/journal/38036
  2. Alba E, Dorronsoro B (2008) Cellular genetic algorithms. Springer, BerlinGoogle Scholar
  3. Alba E, Troya J (2001) Gaining new fields of application for OOP: the parallel evolutionary algorithm case. J Object Orient Prog. Web-only version. Available from
  4. Alba E, Almeida F, Blesa M, Cotta C, Díaz M, Dorta I, Gabarró J, León C, Luque G, Petit J, et al (2006) Efficient parallel LAN/WAN algorithms for optimization. The MALLBA project. Parallel Comput 32(5–6):415–440CrossRefGoogle Scholar
  5. Alcalá-Fdez J, Sánchez L, García S, del Jesus MJ, Ventura S, Garrell JM, Otero J, Romero C, Bacardit J, Rivas VM, Fernández JC, Herrera F (2009) KEEL: A software tool to assess evolutionary algorithms for data mining problems. Soft Comput 13(3):307–318CrossRefGoogle Scholar
  6. Araujo L, Merelo-Guervós J, Cotta C, de Vega F (2008) MultiKulti algorithm: migrating the most different genotypes in an Island model. Arxiv preprint arXiv:0806.2843Google Scholar
  7. Ashton E, Hietaniemi J (2006) CPAN frequently asked questions. Tech. rep., Cited 6/10/2006.
  8. Bäck T, Fogel D, Michalewicz Z (1997) Handbook of evolutionary computation. IOP Publishing Ltd, BristolzbMATHCrossRefGoogle Scholar
  9. Baiocchi G (2004) Using Perl for statistics: data processing and statistical computing. J Stat Softw 11(1):1–81Google Scholar
  10. Baldi M, Corno F, Rebaudengo M, Reorda MS, Squillero G (2000) Telecommunications optimization: heuristic and adaptive techniques. In: Corne D, Smith G, Oates MJ. chap. GA-based verification of network protocols performance. Wiley, Great Britain, pp 185–198Google Scholar
  11. Bates D (1993) Data manipulation in Perl. Comput Sci Stat Tech. Rep., Available from
  12. Blansit B (2006) Perl: the duct tape of the internet. J Electron Resour Med Librar 3(2):91CrossRefGoogle Scholar
  13. blokhead: A beginning guide to evolutionary algorithms. Available from (2003)
  14. Box D, Ehnebuske D, Kakivaya G, Layman A, Mendelsohn N, Nielsen H, Thatte S, Winer D (2000) Simple object access protocol (SOAP) 1.1. Available from
  15. Cahon S, Melab N, Talbi E (2004) ParadisEO: a framework for the reusable design of parallel and distributed metaheuristics. J Heuristics 10(3):357–380CrossRefGoogle Scholar
  16. Castillo P, Arenas M, Castellano J, Merelo-Guervós JJ, Rivas V, Romero G (2002) Optimisation of multilayer perceptrons using a distributed evolutionary algorithm with SOAP. In: Guervós JJM, Adamidis P, Beyer HG, nas JLFV, Schwefel HP (eds) Parallel problem solving from nature—PPSN VII, 7th international conference, Granada, September 7–11, 2002. Proceedings, no. 2439 in Lecture Notes in Computer Science, LNCS. Springer, pp 676–688Google Scholar
  17. Castillo P, Merelo J, Arenas M, Romero G (2007) Comparing evolutionary hybrid systems for design and optimization of multilayer perceptron structure along training parameters. Inform Sci 177:2884–2905. doi:  10.1016/j.ins.2007.02.021 Google Scholar
  18. Castillo P, Fernández G, Mora A, Merelo J, Bernier J, Prieto A (2008) Evolving machine microprograms. In: Genetic and evolutionary computation conference, GECCO2008. ACM Press, New York, pp 1103–1104Google Scholar
  19. Dyer D (2008) Watchmaker framework for evolutionary computation - version 0.5.0. Available from
  20. Eiben AE, Smith JE (2003) Introduction to evolutionary computing. Springer, BerlinGoogle Scholar
  21. Eiben A, Van Kemenade C, Kok J (1995) Orgy in the computer: multi-parent reproduction in genetic algorithms. In: Proceedings of the 3rd european conference on artificial life, no. 929 in LNAI. Springer, pp 934–945Google Scholar
  22. Fallside DC (2004) XML Schema Part 0: Primer. Available from
  23. Fourment M, Gillings M (2008) A comparison of common programming languages used in bioinformatics. BMC Bioinform 9(1):82CrossRefGoogle Scholar
  24. Gagné C, Parizeau M (2006) Genericity in evolutionary computation software tools: principles and case-study. Int J Artif Intell Tools 15(2):173–194CrossRefGoogle Scholar
  25. Gamma E, Helm R, Johnson R, Vlissides J (1993) Design patterns: abstraction and reuse of object-oriented design. In: ECOOP’93, object-oriented programming, 7th european conference, Kaiserslautern, July 26–30, 1993: Proceedings, Lecture Notes in Computer Science, vol 707. Springer, pp 406–431Google Scholar
  26. García-Nieto J, Alba E, Chicano F (2007) Using metaheuristic algorithms remotely via ROS. In: GECCO ’07: Proceedings of the 9th annual conference on genetic and evolutionary computation. ACM, New York, pp 1510–1510. doi:
  27. Giacobini M, Preuss M, Tomassini M (2006a) Effects of scale-free and small-world topologies on binary coded self-adaptive CEA. In: Evolutionary computation in combinatorial optimization: 6th european conference, EvoCOP 2006, Budapest, April 10–12, Proceedings. SpringerGoogle Scholar
  28. Giacobini M, Preuss M, Tomassini M (2006b) Effects of scale-free and small-world topologies on binary coded self-adaptive CEA. In: Gottlieb J, Raidl GR (eds) Evolutionary computation in combinatorial optimization—EvoCOP 2006, LNCS, vol 3906. Springer, Budapest, pp 85–96Google Scholar
  29. gumpu: Genetic Programming or breeding Perls. Available from (2001)
  30. Harold ER (2001) XML Bible. IDG Books worldwideGoogle Scholar
  31. Hugman J (2003) mybeasties: an object ecosystem. Available from
  32. Igel C, Heidrich-Meisner V, Glasmachers T (2008) Shark. J Mach Learn Res 9:993–996.
  33. Ingerson B, Evans C, Ben-Kiki O (2001) YAML 1.2 specification. Available from
  34. jweed: improving evolutionary algorithm. Available from (2004)
  35. Keijzer M, Merelo-Guervós JJ, Romero G, Schoenauer M (2002) Evolving objects: a general purpose evolutionary computation library. In: Collet P, Fonlupt C, Hao JK, Lutton E, Schoenauer M (eds) Artificial evolution, 5th international conference, evolution artificielle, EA 2001, Le Creusot, France, October 29–31, 2001, Selected Papers, Lecture Notes in Computer Science, vol 2310. Springer, pp 231–244Google Scholar
  36. Kirkpatrick S, Gelatt C, Vecchi M (1983) Optimization by simulated annealing. Science 220(4598):671–680CrossRefMathSciNetGoogle Scholar
  37. Klein J, Spector L (2007) Unwitting distributed genetic programming via asynchronous JavaScript and XML. In: Proceedings of the 9th annual conference on genetic and evolutionary computation. ACM, New York, pp 1628–1635Google Scholar
  38. Koza JR (1992) Genetic programming: on the programming of computers by means of natural selection. MIT Press, CambridgezbMATHGoogle Scholar
  39. Kunken J (2001) The application of genetic algorithms in English vocabulary generation. In: Proceedings of the twelfth midwest artificial intelligence and cognitive science conference 2001. Miami University Press. Available also from∼jkunken/glot-bot/
  40. Laredo JLJ, Eiben AE, Steen MV, Castillo PA, Mora AM, Merelo JJ (2008a) P2P evolutionary algorithms: a suitable approach for tackling large instances in hard optimization problems. In: 14th international euro-par conference, Las Palmas de Gran Canaria, Spain, August 26–29, 2008. Proceedings, pp 622–631. doi: 10.1007/978-3-540-85451-7.
  41. Laredo JLJ, Eiben AE, Steen MV, Merelo JJ (2008b) On the run-time dynamics of a peer-to-peer evolutionary algorithm. In: Rudolph G, Jansen T, Lucas S, Poloni C, Beume N (eds) Parallel problem solving from nature - PPSN X, LNCS, vol 5199. Springer, Dortmund, pp 236–245. doi:  10.1007/978-3-540-87700-4_24
  42. Lee W, Kim H (2005) Genetic algorithm implementation in python. In: Proceedings—fourth annual ACIS international conference on computer and information science, ICIS 2005, vol 2005, pp 8–12Google Scholar
  43. Lenaerts T, Manderick B (1998) Building a genetic programming framework: the added-value of design patterns. In: Genetic programming: first european workshop, EuroGP’98: Paris, April 14–15, 1998: Proceedings. Springer, pp 196–208Google Scholar
  44. Loui RP (2008) In praise of scripting: real programming pragmatism. IEEE Comput 41(7):22–26Google Scholar
  45. Lukasz S (2009) AI::Genetic::Pro-efficient genetic algorithms for professional purpose. Available from∼strzelec/AI-Genetic-Pro-0.34/lib/AI/Genetic/
  46. Luke S, et al (2009) ECJ: a java-based evolutionary computation and genetic programming research system. Available at
  47. MacCallum R (2003) Introducing a Perl genetic programming system–and can meta-evolution solve the bloat problem. In: Genetic programming, 6th european conference, EuroGP. Springer, pp 364–373Google Scholar
  48. McPhee NF, Hopper NJ, Reierson ML (1998) Sutherland: an extensible object-oriented software framework for evolutionary computation. In: Koza JR, Banzhaf W, Chellapilla K, Deb K, Dorigo M, Fogel DB, Garzon MH, Goldberg DE, Iba H, Riolo R (eds) Genetic programming 1998: proceedings of the third annual conference, pp 22–25 Jul. Morgan Kaufmann, University of Wisconsin, Madison.∼mcphee/Research/Sutherland/
  49. Merelo JJ, Castillo PA, Arenas MG, Romero G (2003) Specifying evolutionary algorithms in XML. In: Mira J, Álvarez (eds) 7th international work-conference on artificial and natural neural networks, IWANN 2003, number 2686–2687 in Lecture Notes in Computer Science, LNCS. pp 503–509. Springer.
  50. Merelo JJ, García AM, Laredo JLJ, Lupión J, Tricas F (2007) Browser-based distributed evolutionary computation: performance and scaling behavior. In: GECCO ’07: proceedings of the 2007 GECCO conference companion on genetic and evolutionary computation, pp 2851–2858. ACM Press, New York. doi:
  51. Merelo JJ, Castillo PA, Laredo JLJ, Mora A, Prieto A (2008a) Asynchronous distributed genetic algorithms with Javascript and JSON. In: WCCI 2008 Proceedings, pp 1372–1379. IEEE Press.
  52. Merelo JJ, Mora AM, Castillo PA, Laredo JLJ, Araujo L, Sharman KC, Esparcia-Alcázar AI, Alfaro-Cid E, Cotta C (2008b) Testing the intermediate disturbance hypothesis: effect of asynchronous population incorporation on multi-deme evolutionary algorithms. In: Rudolph G, Jansen T, Lucas S, Poloni C, Beume N (eds) Parallel problem solving from nature-PPSN X, LNCS, vol 5199, pp 266–275. Springer, Dortmund. doi:  10.1007/978-3-540-87700-4_27
  53. Merelo-Guervós JJ (2002) Evolutionary computation in Perl. In: Perl Mongers M (ed) YAPC::Europe::2002, pp 2–22Google Scholar
  54. Merelo-Guervós JJ, Castillo-Valdivieso P (2004) Conference paper assignment using a combined greedy/evolutionary algorithm. In: Yao X, Burke E, Lozano JA, Smith J, Guervós JJM, Bullinaria JA, Rowe J, Tino P, Kabán A, Schwefel HP (eds) Parallel problem solving from nature—PPSN VIII, no. 3242 in Lecture Notes in Computer Science,LNCS, pp 602–611. SpringerGoogle Scholar
  55. Merelo-Guervós JJ, Arenas MG, Carpio J, Castillo P, Rivas VM, Romero G, Schoenauer M (2000) Evolving objects. In: Wang PP (ed) Proc. JCIS 2000 (joint conference on information sciences), vol I, pp 1083–1086. ISBN: 0-9643456-9-2Google Scholar
  56. Merelo-Guervós JJ, Prieto A (1996) gags, a flexible object-oriented library for evolutionary computation. In: Borrajo D, Isasi P (eds) MALFO96, Procs. of the first international workshop on machine learning, forecasting and optimization, pp 99–105. Available from
  57. Michalewicz Z (1996) Genetic Algorithms + Data Structures = Evolution programs, 3rd edn. Springer, BerlinGoogle Scholar
  58. Mitchell M, Forrest S, Holland J (1992) The royal road for genetic algorithms: fitness landscapes and GA performance. In: Towards a practice of autonomous systems: proceedings of the first european conference on artificial life, pp 245–254Google Scholar
  59. Murray B, Williams K (1999) Genetic algorithms with Perl. The Perl Journal 5(1). Also available from∼ken/genetic/article.html
  60. Networks O (2009) XML from the inside out. Web site at
  61. Neylon MK (2001) Algorithm :: Genetic. Available from
  62. Ousterhout JK (1998) Scripting: higher level programming for the 21st century. Computer 31(3):23–30Google Scholar
  63. Pedersen T, Patwardhan S, Michelizzi J (2004) WordNet:: similarity-measuring the relatedness of concepts. In: Proceedings of the nineteenth national conference on artificial intelligence (AAAI-04) pp 1024–1025Google Scholar
  64. Prechelt L (2000) An empirical comparison of seven programming languages. IEEE Comput 33(10):23–29. doi: Google Scholar
  65. Ray ET (2001) Learning XML: creating self-describing data. O ’Reilly, BeijingGoogle Scholar
  66. Raymond E (1998) Book review: the essential Perl books. Linux Journal 46es. Available from
  67. regeya: Why YAML? Why not? (2004)
  68. Schwartz RL, Phoenix T Foy BD (2008) Learning Perl, 5th edn. O ’Reilly & Associates, Sebastopol, CA, USA Google Scholar
  69. Smith MA (1998) Building software frameworks for evolutionary computation. In: Porto VW, Saravanan N, Waagen DE, Eiben AE (eds) Evolutionary programming, Lecture Notes in Computer Science, vol 1447. Springer, pp 557–567 Google Scholar
  70. Stajich J, Block D, Boulez K, Brenner S, Chervitz S, Dagdigian C, Fuellen G, Gilbert J, Korf I, Lapp H, et al (2002) The bioperl toolkit: Perl modules for the life sciences. Genome Res 12(10):1611–1618. doi:  10.1101/gr.361602 Google Scholar
  71. Veenhuis C, Franke K, Kōppen M (2000) A semantic model for evolutionary computation. In: Proceedings IIZUKA ’00, pp 68–73Google Scholar
  72. Ventura S, Romero C, Zafra A, Delgado J, Hervás C (2008) JCLEC: a java framework for evolutionary computation. Soft Comput 12(4):381–392Google Scholar
  73. Wagner S, Winkler S, Pitzer E, Kronberger G, Beham A, Braune R, Affenzeller M (2007) Benefits of plugin-based heuristic optimization software systems. In: Proceedings computer aided systems theory EUROCAST 2007, Lecture Notes in Computer Science, vol 4739. Springer, p 747Google Scholar
  74. Wainwright P, Calpini A, Corliss A, Cozens S, Powers S, Merelo-Guervós J, Saraf A, Nandor C (2001) Professional Perl programming. Wrox Press Inc. Available from or
  75. Walker J (2005) Floating point benchmark: Comparing languages.
  76. Wall L, Christiansen T, Orwant J (2000) Programming Perl, 3rd edn. O ’Reilly & AssociatesGoogle Scholar
  77. Whitley L (1993) Cellular genetic algorithms. In: Proceedings of the 5th international conference on genetic algorithms table of contents. Morgan Kaufmann Publishers Inc. San FranciscoGoogle Scholar
  78. Whitley D (1994) A genetic algorithm tutorial. Stat Comput 4(2):65–85CrossRefGoogle Scholar
  79. Wilson GC, McIntyre A, Heywood MI (2004) Resource review: three open source systems for evolving programs—Lilgp, ECJ and grammatical evolution. Genetic Program Evol Mach 5(1):103–105CrossRefGoogle Scholar
  80. Zlatanov T (2001) Cultured Perl:genetic algorithms applied with Perl create your own darwinian breeding grounds. Available from

Copyright information

© Springer-Verlag 2009

Authors and Affiliations

  • Juan Julián Merelo Guervós
    • 1
    Email author
  • Pedro A. Castillo
    • 1
  • Enrique Alba
    • 2
  1. 1.Depto. Arquitectura y Tecnología de Computadores, ETS Ingenierías Informática y TelecomunicacionesUniversidad de GranadaGranadaSpain
  2. 2.Depto. Lenguajes y Ciencias de la ComputaciónUniversidad de MálagaMalaga Spain

Personalised recommendations