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 to check access.
Buy single article
Instant access to the full article PDF.
Price includes VAT for USA
Subscribe to journal
Immediate online access to all issues from 2019. Subscription will auto renew annually.
This is the net price. Taxes to be calculated in checkout.
More information about “Humies” awards can be found at http://www.human-competitive.org/.
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
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
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
Harrison D, Rubinfeld DL (1978) Hedonic prices and the demand for clean air. J Environ Econ Manag 5:81–102
Jablkowski B, Gabor UT, Spinczyk O (2017) Evolutionary planning of virtualized cyber-physical compute and control clusters. J Syst Archit 73:17–27
Korns MF (2011) Accuracy in symbolic regression. Springer, New York, pp 129–151
Koza JR (1992) Genetic programming: on the programming of computers by means of natural selection. MIT Press, Cambridge
Koza JR (1994) Genetic programming II: automatic discovery of reusable programs. MIT Press, Cambridge
Koza JR (2010) Human-competitive results produced by genetic programming. Genet Program Evolvable Mach 11(3–4):251–284
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
Langdon W, Harman M (2015a) Optimizing existing software with genetic programming. IEEE Trans Evol Comput 19(1):118–135
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
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
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
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
Poli R, Langdon WB, McPhee NF (2008) A field guide to genetic programming. Lulu Enterprises, UK
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
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
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
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
White D, Arcuri A, Clark JA (2011) Evolutionary improvement of programs. IEEE Trans Evol Comput 15(4):515–538
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
Yuan Y, Banzhaf W (2017) Arja: automated repair of java programs via multi-objective genetic programming. CoRR arXiv:1712.07804
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.
Conflict of interest
The authors declare that they have no conflict of interest.
This article does not contain any studies with human participants or animals performed by any of the authors.
Springer Nature remains neutral with regard to jurisdictional claims in published maps and institutional affiliations.
Communicated by V. Loia.
About this article
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
- Genetic improvement
- Genetic programming