Skip to main content
Log in

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

  • Original Paper
  • Published:
Soft Computing Aims and scope Submit manuscript

Abstract

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.

This is a preview of subscription content, log in via an institution to check access.

Access this article

Price excludes VAT (USA)
Tax calculation will be finalised during checkout.

Instant access to the full article PDF.

Fig. 1
Fig. 2
Fig. 3
Fig. 4
Fig. 5
Fig. 6
Fig. 7
Fig. 8
Fig. 9
Fig. 10
Fig. 11
Fig. 12
Fig. 13

Similar content being viewed by others

Notes

  1. Tree::DAG_Node and Bit::Vector classes, and many more, can be found in the helpful CPAN, or Comprehensive Perl Archive Network.

References

  • Adam K (2008) Microsoft partners with Strawberry Perl to improve the CPAN. http://use.perl.org/∼Alias/journal/38036

  • Alba E, Dorronsoro B (2008) Cellular genetic algorithms. Springer, Berlin

  • 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 http://adtmag.com/articles/2001/12/01/gaining-new-fields-of-application-for-oop-the-parallel-evolutionary-algorithm-case.aspx

  • 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–440

    Article  Google Scholar 

  • 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–318

    Article  Google Scholar 

  • 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.2843

  • Ashton E, Hietaniemi J (2006) CPAN frequently asked questions. Tech. rep., Cited 6/10/2006. http://www.cpan.org/misc/cpan-faq.html#What_is_CPAN

  • Back EC (2008) Ruby vs PHP performance revisited http://elliottback.com/wp/archives/2008/01/17/ruby-vs-php-performance-revisited/

  • Bäck T, Fogel D, Michalewicz Z (1997) Handbook of evolutionary computation. IOP Publishing Ltd, Bristol

    Book  MATH  Google Scholar 

  • Baiocchi G (2004) Using Perl for statistics: data processing and statistical computing. J Stat Softw 11(1):1–81

    Google Scholar 

  • 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–198

  • Bates D (1993) Data manipulation in Perl. Comput Sci Stat Tech. Rep., Available from http://www.ftp.wu-wien.ac.at/pub/lib/info/Data_in_perl.ps.gz

  • Blansit B (2006) Perl: the duct tape of the internet. J Electron Resour Med Librar 3(2):91

    Article  Google Scholar 

  • blokhead : A beginning guide to evolutionary algorithms. Available from http://perlmonks.org/index.pl?node_id=298877 (2003)

  • 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 http://www.w3.org/TR/soap/

  • Cahon S, Melab N, Talbi E (2004) ParadisEO: a framework for the reusable design of parallel and distributed metaheuristics. J Heuristics 10(3):357–380

    Article  Google Scholar 

  • 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–688

  • 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 

  • 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–1104

  • Dyer D (2008) Watchmaker framework for evolutionary computation - version 0.5.0. Available from http://blog.uncommons.org/2008/12/10/watchmaker-framework-for-evolutionary-computation-version-050/

  • Eiben AE, Smith JE (2003) Introduction to evolutionary computing. Springer, Berlin

  • 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–945

  • Fallside DC (2004) XML Schema Part 0: Primer. Available from http://www.w3.org/TR/xmlschema-0/

  • Fourment M, Gillings M (2008) A comparison of common programming languages used in bioinformatics. BMC Bioinform 9(1):82

    Article  Google Scholar 

  • Gagné C, Parizeau M (2006) Genericity in evolutionary computation software tools: principles and case-study. Int J Artif Intell Tools 15(2):173–194

    Article  Google Scholar 

  • 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–431

  • 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: http://doi.acm.org/10.1145/1276958.1277239

  • 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. Springer

  • 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–96

  • gumpu : Genetic Programming or breeding Perls. Available from http://perlmonks.org/index.pl?node_id=31147 (2001)

  • Harold ER (2001) XML Bible. IDG Books worldwide

  • Hugman J (2003) mybeasties: an object ecosystem. Available from http://sourceforge.net/projects/mybeasties

  • Igel C, Heidrich-Meisner V, Glasmachers T (2008) Shark. J Mach Learn Res 9:993–996. http://www.scopus.com

  • Ingerson B, Evans C, Ben-Kiki O (2001) YAML 1.2 specification. Available from http://yaml.org/spec/1.2/

  • jweed : improving evolutionary algorithm. Available from http://perlmonks.org/index.pl?node_id=330315 (2004)

  • 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–244

  • Kirkpatrick S, Gelatt C, Vecchi M (1983) Optimization by simulated annealing. Science 220(4598):671–680

    Article  MathSciNet  Google Scholar 

  • 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–1635

  • Koza JR (1992) Genetic programming: on the programming of computers by means of natural selection. MIT Press, Cambridge

    MATH  Google Scholar 

  • 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 http://www.ocf.berkeley.edu/∼jkunken/glot-bot/

  • 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. http://dx.doi.org/10.1007/978-3-540-85451-7_66

  • 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

  • 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–12

  • 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–208

  • Loui RP (2008) In praise of scripting: real programming pragmatism. IEEE Comput 41(7):22–26

    Google Scholar 

  • Lukasz S (2009) AI::Genetic::Pro-efficient genetic algorithms for professional purpose. Available from http://search.cpan.org/∼strzelec/AI-Genetic-Pro-0.34/lib/AI/Genetic/Pro.pm

  • Luke S, et al (2009) ECJ: a java-based evolutionary computation and genetic programming research system. Available at http://www.cs.umd.edu/projects/plus/ec/ecj

  • 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–373

  • 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. http://www.mrs.umn.edu/∼mcphee/Research/Sutherland/sutherland_gp98_announcement.ps.gz

  • 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. http://www.springerlink.com/link.asp?id=v6j34778lx0y43m0

  • 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: http://doi.acm.org/10.1145/1274000.1274083

  • 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. http://atc.ugr.es/I+D+i/congresos/2008/CEC_2008_1372.pdf

  • 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

  • Merelo-Guervós JJ (2002) Evolutionary computation in Perl. In: Perl Mongers M (ed) YAPC::Europe::2002, pp 2–22

  • 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. Springer

  • 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-2

  • 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 http://neo.lcc.uma.es/EAWebSite/SKELETON/GPROG/gags-paper.ps.gz

  • Michalewicz Z (1996) Genetic Algorithms + Data Structures = Evolution programs, 3rd edn. Springer, Berlin

  • 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–254

  • Murray B, Williams K (1999) Genetic algorithms with Perl. The Perl Journal 5(1). Also available from http://mathforum.org/∼ken/genetic/article.html

  • Networks O (2009) XML.com: XML from the inside out. Web site at http://www.xml.com

  • Neylon MK (2001) Algorithm :: Genetic. Available from http://perlmonks.org/index.pl?node_id=81678

  • Ousterhout JK (1998) Scripting: higher level programming for the 21st century. Computer 31(3):23–30

    Google Scholar 

  • 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–1025

  • Prechelt L (2000) An empirical comparison of seven programming languages. IEEE Comput 33(10):23–29. doi: http://doi.ieeecomputersociety.org/10.1109/2.876288

    Google Scholar 

  • Ray ET (2001) Learning XML: creating self-describing data. O ’Reilly, Beijing

  • Raymond E (1998) Book review: the essential Perl books. Linux Journal 46es. Available from http://www.linuxjournal.com/article/2523

  • regeya : Why YAML? Why not? http://www.kuro5hin.org/story/2004/10/29/14225/062 (2004)

  • Schwartz RL, Phoenix T Foy BD (2008) Learning Perl, 5th edn. O ’Reilly & Associates, Sebastopol, CA, USA

  • 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

  • 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 

  • Veenhuis C, Franke K, Kōppen M (2000) A semantic model for evolutionary computation. In: Proceedings IIZUKA ’00, pp 68–73

  • Ventura S, Romero C, Zafra A, Delgado J, Hervás C (2008) JCLEC: a java framework for evolutionary computation. Soft Comput 12(4):381–392

    Google Scholar 

  • 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 747

  • 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 http://www.amazon.com/exec/obidos/ASIN/1861004494 or http://www.amazon.co.uk/exec/obidos/ASIN/1861004494

  • Walker J (2005) Floating point benchmark: Comparing languages. http://www.fourmilab.ch/fourmilog/archives/2005-08/000567.html

  • Wall L, Christiansen T, Orwant J (2000) Programming Perl, 3rd edn. O ’Reilly & Associates

  • Whitley L (1993) Cellular genetic algorithms. In: Proceedings of the 5th international conference on genetic algorithms table of contents. Morgan Kaufmann Publishers Inc. San Francisco

  • Whitley D (1994) A genetic algorithm tutorial. Stat Comput 4(2):65–85

    Article  Google Scholar 

  • 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–105

    Article  Google Scholar 

  • Zlatanov T (2001) Cultured Perl:genetic algorithms applied with Perl create your own darwinian breeding grounds. Available from http://www106.ibm.com/developerworks/linux/library/lgenperl/

Download references

Acknowledgements

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 http://fon.gs/ae-acks/). 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.

Author information

Authors and Affiliations

Authors

Corresponding author

Correspondence to Juan Julián Merelo Guervós.

Rights and permissions

Reprints and permissions

About this article

Cite this article

Merelo Guervós, J.J., Castillo, P.A. & Alba, E. Algorithm::Evolutionary, a flexible Perl module for evolutionary computation. Soft Comput 14, 1091–1109 (2010). https://doi.org/10.1007/s00500-009-0504-3

Download citation

  • Published:

  • Issue Date:

  • DOI: https://doi.org/10.1007/s00500-009-0504-3

Keywords

Navigation