Genetic Improvement of Software for Multiple Objectives

  • William B. LangdonEmail author
Conference paper
Part of the Lecture Notes in Computer Science book series (LNCS, volume 9275)


Genetic programming (GP) can increase computer program’s functional and non-functional performance. It can automatically port or refactor legacy code written by domain experts. Working with programmers it can grow and graft (GGGP) new functionality into legacy systems and parallel Bioinformatics GPGPU code. We review Genetic Improvement (GI) and SBSE research on evolving software.


Genetic Programming Genetic Improvement Software Product Line Garbage Collection Test Oracle 
These keywords were added by machine and not by the authors. This process is experimental and the keywords may be updated as the learning algorithm improves.



I am grateful for the assistance of Andrea Arcuri, Robert Feldt, Marc Schoenauer, Wes Weimer and Darrell Whitley. Tesla donated by nVidia (


  1. 1.
    Ryan, C., Ivan, L.: Automatic parallelization of arbitrary programs. In: Langdon, W.B., Fogarty, T.C., Nordin, P., Poli, R. (eds.) EuroGP 1999. LNCS, vol. 1598, pp. 244–254. Springer, Heidelberg (1999).\(\sim \) wbl/biblio/gp-html/ryan_1999_apap.html CrossRefGoogle Scholar
  2. 2.
    Koza, J.R.: Genetic Programming: On the Programming of Computers by Natural Selection. MIT press (1992).
  3. 3.
    Poli, R., Langdon, W.B., McPhee, N.F.: A field guide to genetic programming (2008). Published via and freely available at (With contributions by J.R. Koza).
  4. 4.
    Weimer, W., Nguyen, T., Le Goues, C., Forrest, S.: Automatically finding patches using genetic programming. In: Fickas, S., (ed.) ICSE 2009, Vancouver, pp. 364–374 (2009).
  5. 5.
    Forrest, S., Nguyen, T., Weimer, W., Le Goues, C.: A genetic programming approach to automated software repair. In: Raidl, G., et al. (eds.) GECCO 2009, pp. 947–954, ACM, Montreal (2009) (Best paper).
  6. 6.
    Weimer, W., Forrest, S., Le Goues, C., Nguyen, T.: Automatic program repair with evolutionary computation. Commun. ACM 53(5), 109–116 (2010).\(\sim \)wbl/biblio/gp-html/Weimer_2010_ACM.html CrossRefGoogle Scholar
  7. 7.
    Fast, E., Le Goues, C., Forrest, S., Weimer, W.: Designing better fitness functions for automated program repair. In: Branke, J., et al. (eds.) GECCO 2010, pp. 965–972. ACM (2010).
  8. 8.
    Schulte, E., Forrest, S., Weimer, W.: Automated program repair through the evolution of assembly code. In: ASE 2010, pp. 313–316. ACM, Antwerp (2010).
  9. 9.
    Schulte, E., Fry, Z.P., Fast, E., Weimer, W., Forrest, S.: Software mutational robustness. Genet. Program Evolvable Mach. 15(3), 281–312 (2014).\(\sim \)wbl/biblio/gp-html/schulte10__autom_progr_repair_evolut_assem_code.html CrossRefGoogle Scholar
  10. 10.
    Orlov, M., Sipper, M.: Flight of the FINCH through the Java wilderness. IEEE Trans. EC 15(2), 166–182 (2011).\(\sim \)wbl/biblio/gp-html/Orlov_2011_ieeeTEC.html Google Scholar
  11. 11.
    Langdon, W.B., Nordin, J.P.: Seeding genetic programming populations. In: Poli, R., Banzhaf, W., Langdon, W.B., Miller, J., Nordin, P., Fogarty, T.C. (eds.) EuroGP 2000. LNCS, vol. 1802, pp. 304–315. Springer, Heidelberg (2000).\(\sim \)wbl/biblio/gp-html/langdon_2000_seed.html CrossRefGoogle Scholar
  12. 12.
    Langdon, W.B.: Genetically improved software. In: Gandomi, A.H., et al. (eds.) Handbook of Genetic Programming Applications. Springer (forthcoming).
  13. 13.
    Harman, M., Jones, B.F.: Search based software engineering. Inf. Softw. Technol. 43(14), 833–839 (2001)CrossRefGoogle Scholar
  14. 14.
    Langdon, W.B., Petke, J., White, D.R.: Genetic improvement 2015 chairs’ welcome. In: GECCO 2015 Companion. ACM, Madrid (2015).
  15. 15.
    Arcuri, A., Yao, X.: Co-evolutionary automatic programming for software development. Inf. Sci. 259, 412–432 (2014).\(\sim \)wbl/biblio/gp-html/Arcuri2010.html CrossRefGoogle Scholar
  16. 16.
    Hussain, D., Malliaris, S.: Evolutionary techniques applied to hashing: An efficient data retrieval method. In: Whitley, D., et al. (eds.) GECCO-2000, p. 760. Morgan Kaufmann, Las Vegas, Nevada, USA (2000).
  17. 17.
    Berarducci, P., Jordan, D., Martin, D., Seitzer, J.: GEVOSH: using grammatical evolution to generate hashing functions. In: Poli, R., et al. (eds.) GECCO 2004 Workshop Proceedings, Seattle, Washington, USA (2004).
  18. 18.
    Estebanez, C., Saez, Y., Recio, G., Isasi, P.: Automatic design of noncryptographic hash functions using genetic programming. Computational Intelligence (forthcoming).
  19. 19.
    Karasek, J., Burget, R., Morsky, O.: Towards an automatic design of non-cryptographic hash function. In: TSP 2011, pp. 19–23, Budapest (2011).
  20. 20.
    Paterson, N., Livesey, M.: Evolving caching algorithms in C by genetic programming. In: Koza, J.R., et al. (eds.): Genetic Programming, pp. 262–267. Morgan Kaufmann, Stanford University, CA, USA (1997).
  21. 21.
    O’Neill, M., Ryan, C.: Automatic generation of caching algorithms. In: Miettinen, K., et al. (eds.) Evolutionary Algorithms in Engineering and Computer Science, pp. 127-134, John Wiley and Sons, Jyväskylä, Finland (1999).
  22. 22.
    Branke, J., Funes, P., Thiele, F.: Evolutionary design of en-route caching strategies. Appl. Soft Comput. 7(3), 890–898 (2006).\(\sim \)wbl/biblio/gp-html/Branke_2006_ASC.html CrossRefGoogle Scholar
  23. 23.
    Risco-Martin, J.L., Atienza, D., Colmenar, J.M., Garnica, O.: A parallel evolutionary algorithm to optimize dynamic memory managers in embedded systems. Parallel Comput. 36(10–11), 572–590 (2010).\(\sim \)wbl/biblio/gp-html/RiscoMartin2010572.html CrossRefzbMATHGoogle Scholar
  24. 24.
    Wu, F., Weimer, W., Harman, M., Jia, Y., Krinke, J.: Deep parameter optimisation. In: GECCO 2015. ACM, Madrid (2015).
  25. 25.
    Rodriguez-Mier, P., Mucientes, M., Lama, M., Couto, M.I.: Composition of web services through genetic programming. Evol. Intell. 3(3–4), 171–186 (2010).\(\sim \)wbl/biblio/gp-html/Rodriguez-Mier_2010_EI.html CrossRefGoogle Scholar
  26. 26.
    Fredericks, E.M., Cheng, B.H.C.: Exploring automated software composition with genetic programming. In: Blum, C., et al. (eds.) GECCO 2013 Companion, pp. 1733–1734. ACM, Amsterdam, The Netherlands (2013).
  27. 27.
    Xiao, L., Chang, C.K., Yang, H.-I., Lu, K.-S., Jiang, H.-Y.: Automated web service composition using genetic programming. In: COMPSACW 2012, pp. 7–12, Izmir (2012).
  28. 28.
    Burke, E.K., Gendreau, M., Hyde, M., Kendall, G., Ochoa, G., Ozcan, E., Qu, R.: Hyper-heuristics: a survey of the state of the art. JORS 64(12), 1695–1724 (2013).\(\sim \)wbl/biblio/gp-html/Burke2013.html CrossRefGoogle Scholar
  29. 29.
    Pappa, G.L., Ochoa, G., Hyde, M.R., Freitas, A.A., Woodward, J., Swan, J.: Contrasting meta-learning and hyper-heuristic research: the role of evolutionary algorithms. Genet. Program Evolvable Mach. 15(1), 3–35 (2014).\(\sim \)wbl/biblio/gp-html/Pappa_2013_GPEM.html CrossRefGoogle Scholar
  30. 30.
    Mahajan, A., Ali, M.S.: Superblock scheduling using genetic programming for embedded systems. In: ICCI 2008. IEEE, pp. 261–266 (2008).
  31. 31.
    Cadar, C., Pietzuch, P., Wolf, A.L.: Multiplicity computing: a vision of software engineering for next-generation computing platform applications. In Sullivan, K., ed.: FoSER 2010 FSE/SDP workshop, pp. 81-86. ACM, Santa Fe, New Mexico, USA (2010).
  32. 32.
    DeMillo, R.A., Offutt, A.J.: Constraint-based automatic test data generation. IEEE Trans. Software Eng. 17(9), 900–910 (1991). CrossRefGoogle Scholar
  33. 33.
    Langdon, W.B., Harman, M., Jia, Y.: Efficient multi-objective higher order mutation testing with genetic programming. JSS 83(12), 2416–2430 (2010).\(\sim \)wbl/biblio/gp-html/langdon_2010_jss.html Google Scholar
  34. 34.
    Feldt, R.: Generating diverse software versions with genetic programming: an experimental study. IEE Proceedings 145(6), 228–236 (1998).\(\sim \)wbl/biblio/gp-html/feldt_1998_gdsvGPes.html CrossRefGoogle Scholar
  35. 35.
    Imamura, K., Foster, J.A.: Fault-tolerant computing with N-version genetic programming. In Spector, L., et al. (eds.) GECCO-2001, p. 178, Morgan Kaufmann, San Francisco, California, USA (2001).
  36. 36.
    Imamura, K., Soule, T., Heckendorn, R.B., Foster, J.A.: Behavioral diversity and a probabilistically optimal GP ensemble. Genet. Program Evolvable Mach. 4(3), 235–253 (2003).\(\sim \)wbl/biblio/gp-html/imamura_2003_GPEM.html CrossRefGoogle Scholar
  37. 37.
    Langdon, W.B., Buxton, B.F.: Genetic programming for combining classifiers. In Spector, L., et al. (eds.) GECCO-2001, pp. 66–73. Morgan Kaufmann, San Francisco, California, USA (2001).
  38. 38.
    Buxton, B.F., Langdon, W.B., Barrett, S.J.: Data fusion by intelligent classifier combination. Meas. Contr. 34(8), 229–234 (2001).\(\sim \)wbl/biblio/gp-html/imamura_2003_GPEM.html CrossRefzbMATHGoogle Scholar
  39. 39.
    Langdon, W.B., Poli, R.: Evolving problems to learn about particle swarm and other optimisers. In: Corne, D., et al. (eds.) CEC-2005, pp. 81–88. IEEE Press, Edinburgh, UK (2005).
  40. 40.
    Cotillon, A., Valencia, P., Jurdak, R.: Android genetic programming framework. In: Moraglio, A., Silva, S., Krawiec, K., Machado, P., Cotta, C. (eds.) EuroGP 2012. LNCS, vol. 7244, pp. 13–24. Springer, Heidelberg (2012).\(\sim \)wbl/biblio/gp-html/cotillon_2012_EuroGP.html CrossRefGoogle Scholar
  41. 41.
    Lopez-Herrejon, R.E., Linsbauer, L.: Genetic improvement for software product lines: an overview and a roadmap. In: GECCO 2015 Companion. ACM, Madrid (2015).
  42. 42.
    Landsborough, J., Harding, S., Fugate, S.: Removing the kitchen sink from software. In GECCO 2015 Companion. ACM, Madrid (2015).
  43. 43.
    Schulte, E., Weimer, W., Forrest, S.: Repairing COTS router firmware without access to source code or test suites: A case study in evolutionary software repair. In: GECCO 2015 Companion. ACM, Madrid (2015).
  44. 44.
    Yeboah-Antwi, K., Baudry, B.: Embedding adaptivity in software systems using the ECSELR framework. In: GECCO 2015 Companion. ACM, Madrid (2015).
  45. 45.
    White, D.R., Arcuri, A., Clark, J.A.: Evolutionary improvement of programs. IEEE Trans. EC 15(4), 515–538 (2011).\(\sim \)wbl/biblio/gp-html/White_2011_ieeeTEC.html Google Scholar
  46. 46.
    Sitthi-amorn, P., Modly, N., Weimer, W., Lawrence, J.: Genetic programming for shader simplification. ACM Trans. Graphics, 30(6), article: 152 (2011).
  47. 47.
    Feldt, R.: Genetic programming as an explorative tool in early software development phases. In: Ryan, C., Buckley, J. (eds.) Proceedings of the 1st International Workshop on Soft Computing Applied to Software Engineering, pp. 11–20. Limerick University Press, University of Limerick, Ireland (1999).
  48. 48.
    Harman, M., Langdon, W.B., Jia, Y., White, D.R., Arcuri, A., Clark, J.A.: The GISMOE challenge: constructing the Pareto program surface using genetic programming to find better programs. In: ASE 2012, pp. 1–14. ACM, Essen, Germany (2012).
  49. 49.
    Lukschandl, E., Holmlund, M., Moden, E.: Automatic evolution of Java bytecode: first experience with the Java virtual machine. In: Poli, R., et al. (eds.) Late Breaking Papers at EuroGP 1998, Paris, France, CSRP-98-10, pp. 14–16, The University of Birmingham, UK (1998).
  50. 50.
    Archanjo, G.A., Von Zuben, F.J.: Genetic programming for automating the development of data management algorithms in information technology systems. Advances in Software Engineering (2012).
  51. 51.
    Ryan, C.: Automatic Re-Engineering of Software using Genetic Programming. Kluwer Academic Publishers (1999).
  52. 52.
    Katz, G., Peled, D.: Synthesizing, correcting and improving code, using model checking-based genetic programming. In: Bertacco, V., Legay, A. (eds.) HVC 2013. LNCS, vol. 8244, pp. 246–261. Springer, Heidelberg (2013).\(\sim \)wbl/biblio/gp-html/conf_hvc_KatzP13.html CrossRefGoogle Scholar
  53. 53.
    Cody-Kenny, B., Lopez, E.G., Barrett, S.: locoGP: improving performance by genetic programming java source code. In: GECCO 2015 Companion. ACM, Madrid (2015).
  54. 54.
    Schulte, E., Dorn, J., Harding, S., Forrest, S., Weimer, W.: Post-compiler software optimization for reducing energy. In: ASPLOS 2014, pp. 639–652. ACM, Salt LakeCity, Utah, USA (2014).
  55. 55.
    Mrazek, V., Vasicek, Z., Sekanina, L.: Evolutionary approximation of software for embedded systems: median function. In: GECCO 2015 Companion. ACM, Madrid (2015).
  56. 56.
    Arcuri, A., Yao, X.: A novel co-evolutionary approach to automatic software bug fixing. In: Wang, J., (ed.) WCCI 2008. IEEE, pp. 162–168 (2008).
  57. 57.
    Le Goues, C., Dewey-Vogt, M., Forrest, S., Weimer, W.: A systematic study of automated program repair: Fixing 55 out of 105 bugs for 8 each. In: Glinz, M., (ed.) ICSE 2012, pp. 3–13 Zurich (2012).
  58. 58.
    Wilkerson, J.L., Tauritz, D.: Coevolutionary automated software correction. In: Branke, J., et al. (eds.) GECCO 2010, pp. 1391-1392. ACM, Portland, Oregon, USA (2010).
  59. 59.
    Bradbury, J.S., Jalbert, K.: Automatic repair of concurrency bugs. In: Di Penta, M., et al. (eds.) SSBSE 2010, Benevento, Italy (2010) (Fast abstract).
  60. 60.
    Ackling, T., Alexander, B., Grunert, I.: Evolving patches for software repair. In: Krasnogor, N., et al. (eds.) GECCO 2011, pp. 1427-1434. ACM, Dublin, Ireland (2011).
  61. 61.
    Kessentini, M., Kessentini, W., Sahraoui, H., Boukadoum, M., Ouni, A.: Design defects detection and correction by example. In: ICPC 2011, pp. 81–90. IEEE, Kingston, Canada (2011).
  62. 62.
    Nguyen, H.D.T., Qi, D., Roychoudhury, A., Chandra, S.: SemFix: program repair via semantic analysis. In: Cheng, B.H.C., Pohl, K., (eds.) ICSE 2013, pp. 772–781. IEEE, San Francisco, USA (2013).
  63. 63.
    Kim, D., Nam, J., Song, J., Kim, S.: Automatic patch generation learned from human-written patches. In: ICSE 2013, pp. 802–811, San Francisco, USA (2013).
  64. 64.
    Tan, S.H., Roychoudhury, A.: relifix: Automated Repair of Software Regressions. In: Canfora, G., et al. (eds.) ICSE 2015, pp. 471–482. IEEE, Florence Italy (2015)Google Scholar
  65. 65.
    Schulte, E., DiLorenzo, J., Weimer, W., Forrest, S.: Automated repair of binary and assembly programs for cooperating embedded devices. In: ASPLOS 2013, pp. 317–328. ACM, Houston, Texas, USA (2013).
  66. 66.
    Yoo, S.: Evolving human competitive spectra-based fault localisation techniques. In: Fraser, G., Teixeira de Souza, J. (eds.) SSBSE 2012. LNCS, vol. 7515, pp. 244–258. Springer, Heidelberg (2012).\(\sim \)wbl/biblio/gp-html/Yoo_2012_SSBSE.html CrossRefGoogle Scholar
  67. 67.
    Weimer, W.: advances in automated program repair and a call to arms. In: Ruhe, G., Zhang, Y. (eds.) SSBSE 2013. LNCS, vol. 8084, pp. 1–3. Springer, Heidelberg (2013).\(\sim \)wbl/biblio/gp-html/Weimer_2013_SSBSE.html CrossRefGoogle Scholar
  68. 68.
    Cody-Kenny, B., Barrett, S.: The emergence of useful bias in self-focusing genetic programming for software optimisation. In: Ruhe, G., Zhang, Y. (eds.) SSBSE 2013. LNCS, vol. 8084, pp. 306–311. Springer, Heidelberg (2013). Graduate Student Track\(\sim \)wbl/biblio/gp-html/Cody-Kenny_2013_SSBSE.html CrossRefGoogle Scholar
  69. 69.
    Gabel, M., Su, Z.: A study of the uniqueness of source code. In: FSE 2010, pp. 147–156. ACM (2010).
  70. 70.
    Darwin, C.: The Origin of Species. Penguin classics, 1985 edn. John Murray (1859)Google Scholar
  71. 71.
    Langdon, W.B., Harman, M.: Evolving a CUDA kernel from an nVidia template. In: Sobrevilla, P., (ed.) WCCI 2010, pp. 2376-2383. IEEE, Barcelona (2010).
  72. 72.
    Hutchins, M., Foster, H., Goradia, T., Ostrand, T.: Experiments on the effectiveness of dataflow- and control-flow-based test adequacy criteria. In: ICSE 1994, pp. 191–200 (1994). url Scholar
  73. 73.
    Stam, J.: Stereo imaging with CUDA. Technical report, nVidia (2008)Google Scholar
  74. 74.
    Langdon, W.B., Harman, M.: Genetically improved CUDA C++ software. In: Nicolau, M., Krawiec, K., Heywood, M.I., Castelli, M., García-Sánchez, P., Merelo, J.J., Rivas Santos, V.M., Sim, K. (eds.) EuroGP 2014. LNCS, vol. 8599, pp. 87–99. Springer, Heidelberg (2014).\(\sim \)wbl/biblio/gp-html/langdon_2014_EuroGP.html Google Scholar
  75. 75.
    Langdon, W.B., Harman, M.: Optimising existing software with genetic programming. IEEE Trans. EC 19(1), 118–135 (2015).\(\sim \)wbl/biblio/gp-html/Langdon_2013_ieeeTEC.html Google Scholar
  76. 76.
    Klus, P., Lam, S., Lyberg, D., Cheung, M.S., Pullan, G., McFarlane, I., Yeo, G.S.H., Lam, B.Y.H.: BarraCUDA - a fast short read sequence aligner using graphics processing units. BMC Research Notes 5(1), 27 (2012).
  77. 77.
    Langdon, W.B., Lam, B.Y.H., Petke, J., Harman, M.: Improving CUDA DNA analysis software with genetic programming. In: GECCO 2015. ACM, Madrid (2015).
  78. 78.
    Langdon, W.B., Lam, B.Y.H.: Genetically improved barraCUDA. Research Note RN/15/03, Department of Computer Science, University College London (2015).
  79. 79.
    Modat, M., Ridgway, G.R., Taylor, Z.A., Lehmann, M., Barnes, J., Hawkes, D.J., Fox, N.C., Ourselin, S.: Fast free-form deformation using graphics processing units. Comput. Methods Programs Biomed. 98(3), 278–284 (2010). CrossRefGoogle Scholar
  80. 80.
    Langdon, W.B., Modat, M., Petke, J., Harman, M.: Improving 3D medical image registration CUDA software with genetic programming. In: Igel, C., et al. (eds.) GECCO 2014, pp. 951-958. ACM, Vancouver, BC, Canada (2014).
  81. 81.
    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: Nicolau, M., Krawiec, K., Heywood, M.I., Castelli, M., García-Sánchez, P., Merelo, J.J., Rivas Santos, V.M., Sim, K. (eds.) EuroGP 2014. LNCS, vol. 8599, pp. 137–149. Springer, Heidelberg (2014).\(\sim \)wbl/biblio/gp-html/Petke_2014_EuroGP.html Google Scholar
  82. 82.
    Harman, M., Jia, Y., Langdon, W.B.: Babel Pidgin: SBSE can grow and graft entirely new functionality into a real world system. In: Le Goues, C., Yoo, S. (eds.) SSBSE 2014. LNCS, vol. 8636, pp. 247–252. Springer, Heidelberg (2014).\(\sim \)wbl/biblio/gp-html/Harman_2014_Babel.html Google Scholar
  83. 83.
    Harman, M.: Software engineering meets evolutionary computation. Comput. 44(10), 31–39 (2011). Cover feature\(sim\)wbl/biblio/gp-html/Harman_2011_ieeeC.html CrossRefGoogle Scholar
  84. 84.
    Jia, Y., Harman, M., Langdon, W.B., Marginean, A.: Grow and serve: Growing Django citation services using SBSE. In: Yoo, S., Minku, L. (eds.) SSBSE 2015. Challenge Track, Bergamo, Italy (2015).
  85. 85.
    Reeder, J., Steffen, P., Giegerich, R.: pknotsRG: RNA pseudoknot folding including near-optimal structures and sliding windows. Nucleic Acids Res. 35(Suppl. 2), W320–W324 (2007). CrossRefGoogle Scholar
  86. 86.
    Langdon, W.B., Harman, M.: Grow and graft a better CUDA pknotsRG for RNA pseudoknot free energy calculation. In: GECCO 2015 Companion. ACM, Madrid (2015).
  87. 87.
    Barr, E.T., Brun, Y., Devanbu, P., Harman, M., Sarro, F.: The plastic surgery hypothesis. In: Orso, A., et al. (eds.) FSE 2014. ACM, Hong Kong (2014).

Copyright information

© Springer International Publishing Switzerland 2015

Authors and Affiliations

  1. 1.CREST, Department of Computer ScienceUniversity College LondonLondonUK

Personalised recommendations