Skip to main content

Some Remarks on Code Evolution with Genetic Programming

  • Chapter
  • First Online:
  • 818 Accesses

Part of the book series: Emergence, Complexity and Computation ((ECC,volume 28))

Abstract

In this chapter we take a fresh look at the current status of evolving computer code using Genetic Programming methods. The emphasis is not so much on what has been achieved in detail in the past few years, but on the general research direction of code evolution and its ramifications for GP. We begin with a quick glance at the area of Search-based Software Engineering (SBSE), discuss the history of GP as applied to code evolution, consider various application scenarios, and speculate on techniques that might lead to a scaling-up of present-day approaches.

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

Buying options

Chapter
USD   29.95
Price excludes VAT (USA)
  • Available as PDF
  • Read on any device
  • Instant download
  • Own it forever
eBook
USD   84.99
Price excludes VAT (USA)
  • Available as EPUB and PDF
  • Read on any device
  • Instant download
  • Own it forever
Softcover Book
USD   109.99
Price excludes VAT (USA)
  • Compact, lightweight edition
  • Dispatched in 3 to 5 business days
  • Free shipping worldwide - see info
Hardcover Book
USD   109.99
Price excludes VAT (USA)
  • Durable hardcover edition
  • Dispatched in 3 to 5 business days
  • Free shipping worldwide - see info

Tax calculation will be finalised at checkout

Purchases are for personal use only

Learn about institutional subscriptions

References

  1. Afzal, W., Torkar, R., Feldt, R.: A systematic review of search-based testing for non-functional system properties. Inf. Softw. Technol. 51, 957–976 (2009)

    Article  Google Scholar 

  2. Alba, E., Chicano, J.F.: Software project management with GAs. Inf. Sci. 177, 238002401 (2007)

    Article  Google Scholar 

  3. Antoniol, G., Di Penta, M., Harman, M.: Search-based techniques applied to optimization of project planning for a massive maintenance project. In: Proceedings of the 21st IEEE International Conference on Software Maintenance, 2005. ICSM’05, pp. 2400249. IEEE Press, New Jersey (2005)

    Google Scholar 

  4. Arcuri, A., Yao, X.: A novel co-evolutionary approach to automatic software bug fixing. In: Proceedings of the 2008 IEEE Congress on Evolutionary Computation, pp. 162–168. IEEE Press, New York (2008)

    Google Scholar 

  5. Arcuri, A., White, D.R., Clark, J., Yao, X.: Multi-objective improvement of software using co-evolution and smart seeding. Proc. Int. Conf. SEAL 2008, 61–70 (2008)

    Google Scholar 

  6. Banzhaf, W., Nordin, P., Keller, R., Francone, F.: Genetic Programming—An Introduction. Morgan-Kaufmann, San Francisco, CA (1998)

    Book  MATH  Google Scholar 

  7. Banzhaf, W., Miller, J.: The challenge of complexity. In: Menon, A. (ed.) Frontiers of Evolutionary Computation, pp. 243–260. Springer, Berlin (2004)

    Chapter  Google Scholar 

  8. Barr, E.T., Harman, M., Jia, Y., Marginean, A., Petke, J.: Automated software transplantation. In: Proceedigns of the 2015 International Symposium on Software Testing and Analysis, ISSTA 2015, pp. 257–269 (2015)

    Google Scholar 

  9. Clark, J.A., Jacob, J.L.: Protocols are programs too: the meta-heuristic search for security protocols. Inf. Softw. Technol. 43, 8910904 (2001)

    Article  Google Scholar 

  10. Curry, R., Lichodzijewski, P., Heywood, M.: Scaling genetic programming to large datasets using hierarchical dynamic subset selection. IEEE Trans. Syst. Man Cybern. Part B (Cybernetics) 37 1065–1073 (2007)

    Google Scholar 

  11. Dustin, E., Rashka, J., Paul, J.: Automated Software Testing. Addison Wesley (1999)

    Google Scholar 

  12. Espejo, P.G., Ventura, S., Herrera, F.: A survey on the application of genetic programming to classification. IEEE Trans. Syst. Man Cybern.-C 40, 121–144 (2010)

    Article  Google Scholar 

  13. Fontana, F., Zanoni, M., Marin, A.: Code smell detection: towards a machine learning-based approach. In: Proceedings of the IEEE International Conference on Software Maintenance, pp. 396-399. IEEE Press, New Jersey (2013)

    Google Scholar 

  14. Forrest, S., Nguyen, T., Weimer, W., Le Goues, C.: A genetic programming approach to automated software repair. In: Proceedigns of the 11th Annual Conference on Genetic and Evolutionary Computation, pp. 947–954. ACM Press, New York (2009)

    Google Scholar 

  15. Gabel, M., Su, Z.: A Study of the uniqueness of source code. In: Proceedings of the Eighteenth ACM SIGSOFT International Symposium on Foundations of Software Engineering, pp. 147–156. ACM Press, New York (2010)

    Google Scholar 

  16. Gathercole, C., Ross, P.: Dynamic training subset selection for supervised learning in genetic programming. In: Proceedings of the International Conference on Parallel Problem Solving from Nature, pp. 312–321. Springer, Berlin (1994)

    Google Scholar 

  17. Greer, D., Ruhe, G.: Software release planning: an evolutionary and iterative approach. Inf. Softw. Technol. 46, 2430253 (2004)

    Article  Google Scholar 

  18. Gruau, F.: Neural network synthesis using cellular encoding and the genetic algorithm. Ph.D. Thesis. Laboratoire de l’Informatique du Parallelisme, Ecole Normale Supirieure de Lyon (1994)

    Google Scholar 

  19. Harding, S., Miller, J.F., Banzhaf, W.: Developments in Cartesian Genetic Programming: self-modifying CGP. Genet. Program. Evolvable Mach. 11, 397–439 (2010)

    Google Scholar 

  20. Harman, M., Jones, B.F.: Search-based software engineering. Inf. Softw. Technol. 43, 833–839 (2001)

    Article  Google Scholar 

  21. Harman, M., Mansouri, S.A., Zhang, Y.: Search based software engineering: a comprehensive analysis and review of trends techniques and applications. Department of Computer Science, King’s College London Technical Report TR-09-03 (2009)

    Google Scholar 

  22. Harman, M., Mansouri, S.A., Zhang, Y.: Search-based software engineering: trends, techniques and applications. ACM Comput. Surv. 45, 11:1–11:61 (2012)

    Google Scholar 

  23. Harman, M., Langdon, W.B., Jia, Y., White, D.R., Arcuri, A., Clark, J.: The GISMOE challenge: constructing the pareto program surface using genetic programming to find better programs. In: Proceedings ot the 27th IEEE/ACM International Conference on Automated Software Engineering (ASE 12), pp. 1–14. ACM Press, New York (2012)

    Google Scholar 

  24. Hillis, W.D.: Co-evolving parasites improve simulated evolution as an optimization procedure. Physica D: Nonlinear Phenom. 42, 228–234 (1990)

    Article  Google Scholar 

  25. Hu, T., Payne, J.L., Banzhaf, W., Moore, J.H.: Evolutionary dynamics on multiple scales: a quantitative analysis of the interplay between genotype, phenotype, and fitness in linear genetic programming. Genet. Program. Evolvable Mach. 13, 305–337 (2012)

    Article  Google Scholar 

  26. Jha, S., Gulwani, S., Seshia, S.A., Tiwari, A.: Oracle-guided component-based program synthesis. In: Proceedings of the 32nd ACM/IEEE International Conference on Software Engineering (ICSE-2010), pp. 215–224. ACM, New York (2010)

    Google Scholar 

  27. Johnson, C.G.: Genetic programming with fitness based on model checking. In: European Conference on Genetic Programming, pp. 114–124. Springer, Berlin (2007)

    Google Scholar 

  28. Katz, G., Peled, D.: Model checking-based genetic programming with an application to mutual exclusion. In: Ramakrishnan, C.R., Rehof, J. (eds.) TACAS 2008, LNCS 4963, p. 1410156 (2008)

    Google Scholar 

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

    MATH  Google Scholar 

  30. Koza, J.R.: Genetic Programming II: Automatic Discovery of Reusable Subprograms. MIT Press, Cambridge, MA (1994)

    MATH  Google Scholar 

  31. Koza, J.R.: Genetic Programming III: Darwinian Invention and Problem Solving. Morgan Kaufmann, San Francisco, CA (1999)

    MATH  Google Scholar 

  32. Langdon, W.B.: Scaling of program tree fitness spaces. Evolut. Comput. 7, 399–428 (1999)

    Article  Google Scholar 

  33. Langdon, W.B.: Size-fair and homologous tree genetic programming crossovers. Genet. Program. Evolvable Mach. 1, 95–119 (2000)

    Article  MATH  Google Scholar 

  34. Langdon, W.B., Harman, M.: Genetically improved CUDA C++ software. In: Proceedings of the European Conference on Genetic Programming, pp. 87–99. Springer, Berlin (2014)

    Google Scholar 

  35. Langdon, W.B., Harman, M.: Optimising existing software with genetic programming. IEEE Trans. Evol. Comput. 19, 118–135 (2015)

    Article  Google Scholar 

  36. Langdon, W.B., Harman, M.: Genetically improved CUDA C++ software. In: Proceedings of the European Conference on Genetic Programming, pp. 87–99. Springer, Berlin (2014)

    Google Scholar 

  37. Langdon, W.B., Poli, R.: Foundations of Genetic Programming. Springer, Berlin (2002)

    Book  MATH  Google Scholar 

  38. Lasarczyk, C.W.G., Dittrich, P., Banzhaf, W.: Dynamic subset selection based on a fitness case topology. Evol. Comput. 12, 223–242 (2004)

    Article  Google Scholar 

  39. Lau, T.A., Weld, D.S.: Programming by demonstration: an inductive learning formulation. In: Proceedings of the 4th international conference on Intelligent user interfaces IUI-1999, pp. 145–152. ACM, New York (1999)

    Google Scholar 

  40. Le Goues, C., Nguyen, T., Forrest, S., Weimer, W.: GenProg: a generic method for automatic software repair. IEEE Trans. Softw. Eng. 38, 54–72 (2012)

    Article  Google Scholar 

  41. Martincorena, I., Luscombe, N.M.: Non-random mutation: the evolution of targeted hypermutation and hypomutation. Bioessays 35, 123–130 (2012)

    Article  Google Scholar 

  42. McBurney, P.W., Liu, C., McMillan, C.: Automated feature discovery via sentence selection and source code summarization. J. Softw.: Evol. Process 28, 120–145 (2016)

    Google Scholar 

  43. McMinn, P.: Search-based software test data generation: a survey. Softw. Test. Verification Reliab. 14, 1050156 (2004)

    Google Scholar 

  44. Menon, A., Tamuz, O., Gulwani, S., Lampson, B., Kalai, A.: A machine learning framework for programming by example. In: JMLR W & CP Proceedings of ICML (2013), vol 28 (2013)

    Google Scholar 

  45. Mens, T., Tourwe, T.: A survey of software refactoring. IEEE Trans. Softw. Eng. 30, 126–139 (2004)

    Article  Google Scholar 

  46. Nguyen, A.T., Nguyen, T.T., Nguyen, H.A., Tamrawi, A., Nguyen, H.V., Al-Kofahi, J., Nguyen, T.N.: Graph-based pattern-oriented, context-sensitive source code completion. In: Proceedigns of the 34th International Conference on Software Engineering, pp. 69–79. IEEE Press, New Jersey (2012)

    Google Scholar 

  47. Ohno, S.: Evolution by Gene Duplication. Springer, New York (1970)

    Book  Google Scholar 

  48. Petke, J., Harman, M., Langdon, W.B., Weimer, W.: Using genetic improvement and code transplants to specialise a C++ program to a problem class. In: Genetic Programming—Proceedings of the 17th European Conference, EuroGP 2014, pp. 137–149. Springer, Berlin (2014)

    Google Scholar 

  49. Petke, J., Langdon, W.B., Harman, M.: Applying genetic improvement to MiniSAT. In: Proceedings of the International Symposium on Search Based Software Engineering, pp. 257–262. Springer, Berlin (2013)

    Google Scholar 

  50. Reiss, S.P.: Semantics-Based Code Search. ICSE09. 16–24 May 2009, pp. 243–253. IEEE Press, New Jersey (2009)

    Google Scholar 

  51. Roy, C.K., Cordy, J.R.: A survey on software clone detection research. Queens Sch. Comput. TR 541–2007 (2007)

    Google Scholar 

  52. Schmidt, M.D., Lipson, H.: Incorporating expert knowledge in evolutionary search: a study of seeding methods. In: Proceedings of the 11th Annual conference on Genetic and evolutionary computation, pp. 1091–1098. ACM Press, New York (2009)

    Google Scholar 

  53. Singh, R., Gulwani, S.: Predicting a correct program in programming by example. In: Kroening, D., Pasareanu, C.S. (eds.) Proceedings of the CAV 2015, pp. 398–414. Springer, Switzerland (2015)

    Google Scholar 

  54. Weimer, W., Nguyen, T., Le Goues, C., Forrest, S.: Automatically finding patches using genetic programming. In: Proceedings of ICSE09, 16–24 May 2009, Vancouver, Canada, pp. 364–374. IEEE Press, New Jersey (2009)

    Google Scholar 

  55. White, D.R., Arcuri, A., Clark, J.A.: Evolutionary improvement of programs. IEEE Trans. Evol. Comput. 15, 515–538 (2011)

    Article  Google Scholar 

  56. Yahav, E.: Analysis and synthesis of “Big Code”. In: Esparza, J. et al. (eds.) Dependable Software Systems Engineering. IOS Press (2016)

    Google Scholar 

Download references

Acknowledgements

This essay was written on the occasion of the Festschrift for Julian F. Miller’s 60th birthday. It is dedicated to Julian, a wonderful friend and inspiring colleague.

Author information

Authors and Affiliations

Authors

Corresponding author

Correspondence to Wolfgang Banzhaf .

Editor information

Editors and Affiliations

Rights and permissions

Reprints and permissions

Copyright information

© 2018 Springer International Publishing AG

About this chapter

Cite this chapter

Banzhaf, W. (2018). Some Remarks on Code Evolution with Genetic Programming. In: Stepney, S., Adamatzky, A. (eds) Inspired by Nature. Emergence, Complexity and Computation, vol 28. Springer, Cham. https://doi.org/10.1007/978-3-319-67997-6_6

Download citation

  • DOI: https://doi.org/10.1007/978-3-319-67997-6_6

  • Published:

  • Publisher Name: Springer, Cham

  • Print ISBN: 978-3-319-67996-9

  • Online ISBN: 978-3-319-67997-6

  • eBook Packages: EngineeringEngineering (R0)

Publish with us

Policies and ethics