Skip to main content
Log in

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

  • Methodologies and Application
  • Published:
Soft Computing Aims and scope Submit manuscript

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.

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.

Institutional subscriptions

Fig. 1
Fig. 2
Fig. 3
Fig. 4
Fig. 5
Fig. 6

Similar content being viewed by others

Notes

  1. More information about “Humies” awards can be found at http://www.human-competitive.org/.

References

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

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

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

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

    Chapter  Google Scholar 

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

  • 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 

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

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

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

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

    Google Scholar 

  • Harrison D, Rubinfeld DL (1978) Hedonic prices and the demand for clean air. J Environ Econ Manag 5:81–102

    Article  Google Scholar 

  • Jablkowski B, Gabor UT, Spinczyk O (2017) Evolutionary planning of virtualized cyber-physical compute and control clusters. J Syst Archit 73:17–27

    Article  Google Scholar 

  • Korns MF (2011) Accuracy in symbolic regression. Springer, New York, pp 129–151

    Google Scholar 

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

    MATH  Google Scholar 

  • Koza JR (1994) Genetic programming II: automatic discovery of reusable programs. MIT Press, Cambridge

    MATH  Google Scholar 

  • Koza JR (2010) Human-competitive results produced by genetic programming. Genet Program Evolvable Mach 11(3–4):251–284

    Article  Google Scholar 

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

    Chapter  Google Scholar 

  • Langdon W, Harman M (2015a) Optimizing existing software with genetic programming. IEEE Trans Evol Comput 19(1):118–135

    Article  Google Scholar 

  • Langdon WB, Harman M (2010) Evolving a CUDA kernel from an nVidia template. In: IEEE congress on evolutionary computation, pp 1–8

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

    Google Scholar 

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

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

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

  • Lichman M (2013) UCI machine learning repository

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

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

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

  • Manna Z, Waldinger RJ (1971) Toward automatic program synthesis. Commun ACM 14(3):151–165

    Article  Google Scholar 

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

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

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

    Chapter  Google Scholar 

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

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

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

    Article  Google Scholar 

  • Poli R, Langdon WB, McPhee NF (2008) A field guide to genetic programming. Lulu Enterprises, UK

    Google Scholar 

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

    Article  Google Scholar 

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

    Article  Google Scholar 

  • Sipper M, Fu W, Ahuja K, Moore JH (2017) From MEGATON to RASCAL: surfing the parameter space of evolutionary algorithms. CoRR arXiv:1706.04119

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

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

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

    Article  Google Scholar 

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

    Article  Google Scholar 

  • White D, Arcuri A, Clark JA (2011) Evolutionary improvement of programs. IEEE Trans Evol Comput 15(4):515–538

    Article  Google Scholar 

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

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

  • Yeh IC (1998) Modeling of strength of high-performance concrete using artificial neural networks. Cem Concr Res 28(12):1797–1808

    Article  Google Scholar 

  • Yuan Y, Banzhaf W (2017) Arja: automated repair of java programs via multi-objective genetic programming. CoRR arXiv:1712.07804

Download references

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.

Author information

Authors and Affiliations

Authors

Corresponding author

Correspondence to Leonardo Trujillo.

Ethics declarations

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.

Additional information

Communicated by V. Loia.

Publisher's Note

Springer Nature remains neutral with regard to jurisdictional claims in published maps and institutional affiliations.

Rights and permissions

Reprints and permissions

About this article

Check for updates. Verify currency and authenticity via CrossMark

Cite this article

López-López, V.R., Trujillo, L. & Legrand, P. Applying genetic improvement to a genetic programming library in C++. Soft Comput 23, 11593–11609 (2019). https://doi.org/10.1007/s00500-018-03705-6

Download citation

  • Published:

  • Issue Date:

  • DOI: https://doi.org/10.1007/s00500-018-03705-6

Keywords

Navigation