Skip to main content

Designing and testing a pool-based evolutionary algorithm


This paper focuses on the iterative design of SofEA , an architecture for distributing evolutionary algorithms (EAs) across computer networks in an asynchronous and decentralized way. SofEA is based on a pool architecture implemented on an object store, allowing the asynchronous interaction with which several clients. The fact that each client is autonomous leads to complex behavior, which will be examined in the work, so that the design can be validated, rules of thumb can be extracted, and the limits of scalability can be found. In this paper we advance the design of an asynchronous, fault-tolerant, and hopefully scalable distributed EA based on the object store CouchDB. We do so by iteratively analyzing running time and average evaluations to solutions on increasingly better versions of the algorithm, looking for the best results, at least from the point of view of running time. By doing so, we increase speed almost fourfold, and also decrement the average number of evaluations to solution in some cases. Experiments have shown also which critical parameters have the bigger influence on the performance in this kind of systems: live population size and number of conflicts, with both being influenced by the number of clients and the size of the population block each client handles at a time. These experiments also show that there is a balance between scalability and fault tolerance, with scalability dropping when a certain number of clients is reached; further clients only increase fault tolerance, at least in the configurations we are using in this paper. The paper also shows that experimentation and measurement conform a good methodology for the design of this kind of asynchronous, heterogeneous and distributed systems, where analytic performance prediction is almost impossible.

This is a preview of subscription content, access via your institution.

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


  1. 1.


  1. Alba E, Troya J (2001) Analyzing synchronous and asynchronous parallel distributed genetic algorithms. Futur Gener Comput Syst 17(4):451–465

    MATH  Article  Google Scholar 

  2. Anderson DP, Cobb J, Korpela E, Lebofsky M, Werthimer D (2002) SETI@home: an experiment in public-resource computing. Commun ACM 45(11):56–61. doi:10.1145/581571.581573

    Article  Google Scholar 

  3. Anderson J, Lehnardt J, Slater N (2009) CouchDB: the definitive guide. Oreilly & Associates Inc, Sebastopol

    Google Scholar 

  4. Bollini A, Piastra M (1999) Distributed and persistent evolutionary algorithms: a design pattern. In: Genetic programming, proceedings EuroGP’99. Lecture notes in computer science, no. 1598. Springer, pp 173–183

  5. Castillo PA, Bernier JL, García-Arenas M, Merelo-Guervós JJ, García-Sánchez P (2011) SOAP vs REST: comparing a master-slave GA implementation. CoRR abs/1105.4978

  6. Crockford D (2006) JavaScript Object Notation (JSON).

  7. Davis M, Liu L, Elias J (1994) VLSI circuit synthesis using a parallel genetic algorithm. In: Proceedings of the first IEEE conference on Evolutionary computation, 1994. IEEE world congress on computational intelligence, vol 1, pp 104–109. doi:10.1109/ICEC.1994.350033

  8. de Souza P, Talukdar S (1991) Genetic algorithms in asynchronous teams. In: Proceedings of the fourth international conference on genetic algorithms. Morgan Kaufmann Publishers, pp 392–399

  9. Dean J, Ghemawat S (2008) MapReduce: simplified data processing on large clusters. Commun ACM 51(1):107

    Article  Google Scholar 

  10. East I, Macfarlane D (1993) Implementation in Occam of parallel genetic algorithms on transputer networks. Stender 2187:43–64

    Google Scholar 

  11. Gagné C, Parizeau M, Dubreuil M (2003) Distributed beagle: an environment for parallel and distributed evolutionary computations. In: Proceedings of the 17th annual international symposium on high performance computing systems and applications (HPCS), pp 201–208

  12. Jedrzejowicz P (2009) A-teams and their applications. In: Nguyen N, Kowalczyk R, Chen SM (eds) Computational collective intelligence. Semantic web, social networks and multiagent systems, Lecture notes in computer science, vol 5796. Springer, Berlin, pp. 36–50. doi:10.1007/978-3-642-04441-0_3

    Chapter  Google Scholar 

  13. Kovács K (2012) Cassandra vs MongoDB vs CouchDB vs Redis vs Riak vs HBase vs Membase vs Neo4j comparison. Accessed 15 March 2012

  14. Laredo J, Castillo P, Mora A, Fernandes C, Merelo J (2008a) Resilience to churn of a peer-to-peer evolutionary algorithm. Int J High Perform Syst Archit 1(4):260–268

    Article  Google Scholar 

  15. Laredo JLJ, Castillo PA, Mora AM, Merelo JJ (2008b) Evolvable agents, a fine grained approach for distributed evolutionary computing: walking towards the peer-to-peer computing frontiers. Soft Comput 12(12):1145–1156

    MATH  Article  Google Scholar 

  16. Lennon J (2009a) Developing CouchDB applications with CouchApp, pp 163–184. In: Lennon J (ed) Beginning CouchDB. Apress, New York

  17. Lennon J (2009b) Introduction to CouchDB. In: Lennon J (ed) Beginning CouchDB. Apress, New York, pp 3–9

  18. Llorà X (2009) Data-intensive computing for competent genetic algorithms: a pilot study using meandre. In: Proceedings of the 11th annual conference on genetic and evolutionary computation. ACM, pp 1387–1394

  19. Llorà X, Ács B, Auvil L, Capitanu B, Welge M, Goldberg D (2008) Meandre: semantic-driven data-intensive flows in the clouds. Technical report 2008103. Illinois Genetic Algorithms Laboratory

  20. Logofătu D, Gruber M, Dan Dumitrescu D (2011) Distributed evolutionary algorithm using the mapreduce paradigm—a case study for data compaction problem. Intelligent Decision Systems in Large-Scale Distributed Environments, pp 279–291

  21. Marin F, Trelles-Salazar O, Sandoval F (1994) Genetic algorithms on LAN-message passing architectures using PVM: application to the Routing problem. In: Davidor Y, Schwefel HP, Männer R (eds) Parallel problem solving from nature PPSN III. Lecture notes in computer science, vol 866. Springer, Berlin, pp 534–543. doi:10.1007/3-540-58484-6_296

    Chapter  Google Scholar 

  22. May D, Shepherd R (1987) Communicating process computers. Inmos technical notes no 72-TCH-022

  23. 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. ACM Press, New York, pp 2851–2858. doi:10.1145/1274000.1274083

  24. Merelo JJ, Castillo P, Laredo J, Mora A, Prieto A (2008) Asynchronous distributed genetic algorithms with Javascript and JSON. In: WCCI 2008 proceedings. IEEE Press, pp 1372–1379.

  25. Merelo-Guervós JJ, Arenas MG, Mora AM, Castillo PA, Romero G, Laredo JLJ (2011a) Cloud-based evolutionary algorithms: an algorithmic study. CoRR abs/1105.6205

  26. Merelo-Guervós JJ, Romero G, García-Arenas M, Castillo PA, Mora AM, Jiménez-Laredo JL (2011b) Implementation matters: programming best practices for evolutionary algorithms. In: Cabestany J, Rojas I, Caparrós GJ (eds) IWANN (2). Lecture notes in computer science, vol 6692. Springer, Berlin, pp 333–340

    Google Scholar 

  27. Merelo-Guervós J, Mora A, Cruz J, Esparcia-Alcazar A, Cotta C (2012a) Scaling in distributed evolutionary algorithms with persistent population. In: Evolutionary Computation (CEC), 2012 IEEE Congress on. pp 1–8. doi:10.1109/CEC.2012.6256622

  28. Merelo-Guervós JJ, Mora A, Cruz JA, Esparcia AI (2012b) Pool-based distributed evolutionary algorithms using an object database. In: di Chio C et al (eds) EvoApplications 2012 proceedings, pp 441–450

  29. Roy G, Lee H, Welch J, Zhao Y, Pandey V, Thurston D (2009) A distributed pool architecture for genetic algorithms. In: IEEE Congress on evolutionary computation, 2009. CEC ’09, pp 1177–1184. doi:10.1109/CEC.2009.4983079

  30. Talukdar S (1997) A-Teams project home page. Technical report. Carnegie-Mellon University.

  31. Talukdar S, Murthy S, Akkiraju R (2003) Asynchronous teams. International series in operations research and management science, pp 537–556

  32. Tanese R (1989) Distributed genetic algorithms. In: Schaffer JD (ed) Proceedings of the third international conference on genetic algorithms. Morgan Kaufmann Publishers, San Mateo

    Google Scholar 

  33. Whitley LD (1993) Cellular genetic algorithms. In: Proceedings of the 5th international conference on genetic algorithms. Morgan Kaufmann Publishers Inc., San Francisco

Download references


This work was supported by project TIN2011-28627-C04-02 awarded by the Spanish Ministry of Science and Innovation and P08-TIC-03903 awarded by the Andalusian Regional Government. We would also like to thank the anonymous reviewers for their helpful comments to the previous versions of this paper. Fernandes wishes to thank FCT, Ministério da Ciência e Tecnologia, his Research Fellowship SFRH/BPD/66876/2009.

Author information



Corresponding author

Correspondence to J. J. Merelo.

Rights and permissions

Reprints and Permissions

About this article

Cite this article

Merelo, J.J., Mora, A.M., Fernandes, C.M. et al. Designing and testing a pool-based evolutionary algorithm. Nat Comput 12, 149–162 (2013).

Download citation


  • Cloud computing
  • Cloud storage
  • Evolutionary algorithms
  • Distributed algorithms
  • NoSQL databases
  • Key-value stores
  • Complex systems