Advertisement

Applying genetic improvement to a genetic programming library in C++

  • Víctor R. López-López
  • Leonardo TrujilloEmail author
  • Pierrick Legrand
Methodologies and Application
  • 61 Downloads

Abstract

A young subfield of evolutionary computing that has gained the attention of many researchers in recent years is genetic improvement. It uses an automated search method that directly modifies the source code or binaries of a software system to find improved versions based on some given criteria. Genetic improvement has achieved notable results and the acceptance of several research communities, namely software engineering and evolutionary computation. Over the past 10 years there have been core publications on the subject; however, we have identified, to the best of our knowledge, that there is no work on applying genetic improvement to a meta-heuristic system. In this work we apply the GI framework called GISMO to the Beagle Puppy library version 0.1 in C++, a genetic programming system configured to perform symbolic regression on several benchmark and real-world problems. The objective is to improve the processing time while maintaining a similar or better test fitness of the best individual produced by the unmodified genetic programming search. Results show that GISMO can generate individuals that present an improvement on those two key aspects over some problems, while also reducing the effects of bloat, one of the main issues in genetic programming.

Keywords

Genetic improvement Meta-heuristic Genetic programming 

Notes

Funding

This research was funded by CONACYT (Mexico) Fronteras de la Ciencia 2015-2 Project No. FC-2015-2:944, TecNM project 6826.18-P, and first authors were supported by CONACYT graduate scholarship No. 302532.

Compliance with ethical standards

Conflict of interest

The authors declare that they have no conflict of interest.

Ethical approval

This article does not contain any studies with human participants or animals performed by any of the authors.

References

  1. Ackling T, Alexander B, Grunert I (2011) Evolving patches for software repair. In: Proceedings of the 13th annual conference on genetic and evolutionary computation. ACM, New York, pp 1427–1434Google Scholar
  2. Arcuri A, Yao X (2008) A novel co-evolutionary approach to automatic software bug fixing. In: 2008 IEEE Congress on evolutionary computation (IEEE World Congress on Computational Intelligence), pp 162–168Google Scholar
  3. Burke EK, Hyde MR, Kendall G, Woodward J (2007) Automatic heuristic generation with genetic programming: evolving a jack-of-all-trades or a master of one. In: Proceedings of the 9th annual conference on genetic and evolutionary computation. ACM, New York, pp 1559–1565Google Scholar
  4. Caseau Y, Laburthe F, Silverstein G (1999) A meta-heuristic factory for vehicle routing problems. In: Proceedings of the 5th international conference on principles and practice of constraint programming. Springer, London, pp 144–158Google Scholar
  5. Forrest S, Nguyen T, Weimer W, Le Goues C (2009) A genetic programming approach to automated software repair. In: Raidl G, et al (eds) GECCO ’09: proceedings of the 11th annual conference on genetic and evolutionary computation, ACM, Montreal, pp 947–954Google Scholar
  6. 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
  7. Haraldsson SO, Woodward JR (2014) Automated design of algorithms and genetic improvement: contrast and commonalities. In: Proceedings of the companion publication of the 2014 annual conference on genetic and evolutionary computation. ACM, New York, pp 1373–1380Google Scholar
  8. Harman M, Petke J (2015) Gi4gi: improving genetic improvement fitness functions. In: Proceedings of the companion publication of the 2015 annual conference on genetic and evolutionary computation. ACM, New York, pp 793–794Google Scholar
  9. Harman M, Langdon WB, Jia Y, White DR, Arcuri A, Clark JA (2012) The GISMOE challenge: constructing the pareto program surface using genetic programming to find better programs (keynote paper). In: IEEE/ACM international conference on automated software engineering, ASE’12, Essen, Germany, Sept 3–7, pp 1–14Google Scholar
  10. Harman M, Jia Y, Langdon WB (2014) Babel pidgin: SBSE can grow and graft entirely new functionality into a real world system. In: Le Goues C, Yoo S (eds) Proceedings of the 6th international symposium, on search-based software engineering, SSBSE 2014, Springer, Fortaleza, LNCS, vol 8636, pp 247–252Google Scholar
  11. Harrison D, Rubinfeld DL (1978) Hedonic prices and the demand for clean air. J Environ Econ Manag 5:81–102CrossRefzbMATHGoogle Scholar
  12. Jablkowski B, Gabor UT, Spinczyk O (2017) Evolutionary planning of virtualized cyber-physical compute and control clusters. J Syst Archit 73:17–27CrossRefGoogle Scholar
  13. Korns MF (2011) Accuracy in symbolic regression. Springer, New York, pp 129–151Google Scholar
  14. Koza JR (1992) Genetic programming: on the programming of computers by means of natural selection. MIT Press, CambridgezbMATHGoogle Scholar
  15. Koza JR (1994) Genetic programming II: automatic discovery of reusable programs. MIT Press, CambridgezbMATHGoogle Scholar
  16. Koza JR (2010) Human-competitive results produced by genetic programming. Genet Program Evolvable Mach 11(3–4):251–284CrossRefGoogle Scholar
  17. Langdon W (2015) Genetic improvement of software for multiple objectives. In: Barros M, Labiche Y (eds) Search-based software engineering, lecture notes in computer science, vol 9275, Springer, Berlin, pp 12–28Google Scholar
  18. Langdon W, Harman M (2015a) Optimizing existing software with genetic programming. IEEE Trans Evol Comput 19(1):118–135CrossRefGoogle Scholar
  19. Langdon WB, Harman M (2010) Evolving a CUDA kernel from an nVidia template. In: IEEE congress on evolutionary computation, pp 1–8Google Scholar
  20. Langdon WB, Harman M (2014) Genetically improved cuda c++ software. In: Revised selected papers of the 17th European conference on genetic programming—vol 8599. Springer, New York, EuroGP 2014, pp 87–99Google Scholar
  21. Langdon WB, Harman M (2015b) Grow and graft a better cuda pknotsrg for rna pseudoknot free energy calculation. In: Proceedings of the companion publication of the 2015 annual conference on genetic and evolutionary computation. ACM, New York, pp 805–810Google Scholar
  22. Langdon WB, Modat M, Petke J, Harman M (2014) Improving 3d medical image registration CUDA software with genetic programming. In: Proceedings of the 2014 annual conference on genetic and evolutionary computation. ACM, New York, pp 951–958Google Scholar
  23. Langdon WB, Lam BYH, Petke J, Harman M (2015) Improving CUDA DNA analysis software with genetic programming. In: Proceedings of the 2015 annual conference on genetic and evolutionary computation. ACM, New York, pp 1063–1070Google Scholar
  24. Lichman M (2013) UCI machine learning repositoryGoogle Scholar
  25. London K, Moore S, Mucci P, Seymour K, Luczak R (2001) The PAPI cross-platform interface to hardware performance counters. In: Department of Defense Users Group Conference Proceedings, pp 18–21Google Scholar
  26. López-López VR, Trujillo L, Legrand P, Olague G (2016) Genetic programming: from design to improved implementation. In: Proceedings of the 2016 on genetic and evolutionary computation conference companion. ACM, New York, pp 1147–1154Google Scholar
  27. Lourenço N, Pereira F, Costa E (2012) Evolving evolutionary algorithms. In: Proceedings of the 14th annual conference companion on genetic and evolutionary computation. ACM, New York, pp 51–58Google Scholar
  28. Manna Z, Waldinger RJ (1971) Toward automatic program synthesis. Commun ACM 14(3):151–165CrossRefzbMATHGoogle Scholar
  29. McDermott J, White DR, Luke S, Manzoni L, Castelli M, Vanneschi L, Jaskowski W, Krawiec K, Harper R, De Jong K, O’Reilly UM (2012) Genetic programming needs better benchmarks. In: Proceedings of the 14th annual conference on genetic and evolutionary computation. ACM, New York, pp 791–798Google Scholar
  30. Orlov M, Sipper M (2009) Genetic programming in the wild: evolving unrestricted bytecode. In: Proceedings of the 11th annual conference on genetic and evolutionary computation. ACM, New York, pp 1043–1050Google Scholar
  31. Petke J, Langdon WB, Harman M (2013) Applying genetic improvement to miniSAT. In: Proceedings of the 5th international symposium on search based software engineering—vol 8084, Springer, New York, pp 257–262Google Scholar
  32. Petke J, Harman M, Langdon WB, Weimer W (2014) Using genetic improvement and code transplants to specialise a c++ program to a problem class. In: Revised selected papers of the 17th European conference on genetic programming—vol 8599, Springer New York, pp 137–149Google Scholar
  33. Petke J, Haraldsson S, Harman M, Langdon WB, White D, Woodward J (2017) Genetic improvement of software: a comprehensive survey. IEEE Trans Evol Comput PP(99):1–1Google Scholar
  34. Petke J, Harman M, Langdon WB, Weimer W (2018) Specialising software for different downstream applications using genetic improvement and code transplantation. IEEE Trans Softw Eng 44(6):574–594CrossRefGoogle Scholar
  35. Poli R, Langdon WB, McPhee NF (2008) A field guide to genetic programming. Lulu Enterprises, UKGoogle Scholar
  36. Pozi MS, Sulaiman MN, Mustapha N, Perumal T (2016) Improving anomalous rare attack detection rate for intrusion detection system using support vector machine and genetic programming. Neural Process Lett 44(2):279–290CrossRefGoogle Scholar
  37. Silva S, Costa E (2009) Dynamic limits for bloat control in genetic programming and a review of past and current bloat theories. Genetic Program Evolvable Mach 10(2):141–179CrossRefGoogle Scholar
  38. Sipper M, Fu W, Ahuja K, Moore JH (2017) From MEGATON to RASCAL: surfing the parameter space of evolutionary algorithms. CoRR arXiv:1706.04119
  39. Smit SK, Eiben AE (2009) Comparing parameter tuning methods for evolutionary algorithms. In: Proceedings of the eleventh conference on congress on evolutionary computation, CEC’09. IEEE Press, Piscataway, pp 399–406Google Scholar
  40. Trujillo L, Munoz L, Galvan-Lopez E, Silva S (2016) neat genetic programming: controlling bloat naturally. In: Doerr B, et al (eds) GECCO 2016 Hot of the Press, ACM, Denver, USA, p hop104Google Scholar
  41. Uy NQ, Hoai NX, O’Neill M, McKay RI, Galván-López E (2011) Semantically-based crossover in genetic programming: application to real-valued symbolic regression. Genet Program Evolvable Mach 12(2):91–119CrossRefGoogle Scholar
  42. Vladislavleva EJ, Smits GF, Den Hertog D (2009) Order of nonlinearity as a complexity measure for models generated by symbolic regression via pareto genetic programming. Trans Evol Comput 13(2):333–349CrossRefGoogle Scholar
  43. White D, Arcuri A, Clark JA (2011) Evolutionary improvement of programs. IEEE Trans Evol Comput 15(4):515–538CrossRefGoogle Scholar
  44. Woodward JR, Swan J (2011) Automatically designing selection heuristics. In: Proceedings of the 13th annual conference companion on genetic and evolutionary computation, ACM, New York, pp 583–590Google Scholar
  45. Woodward JR, Swan J (2012) The automatic generation of mutation operators for genetic algorithms. In: Proceedings of the 14th annual conference companion on genetic and evolutionary computation. ACM, New York, pp 67–74Google Scholar
  46. Yeh IC (1998) Modeling of strength of high-performance concrete using artificial neural networks. Cem Concr Res 28(12):1797–1808CrossRefGoogle Scholar
  47. Yuan Y, Banzhaf W (2017) Arja: automated repair of java programs via multi-objective genetic programming. CoRR arXiv:1712.07804

Copyright information

© Springer-Verlag GmbH Germany, part of Springer Nature 2018

Authors and Affiliations

  1. 1.Instituto Tecnológico de TijuanaTijuanaMexico
  2. 2.IMB - Institut de Mathématiques de Bordeaux, UMR CNRS 5251 and Inria Bordeaux Sud-OuestUniversity of BordeauxBordeauxFrance

Personalised recommendations