Visualising the Search Landscape of the Triangle Program

  • William B. LangdonEmail author
  • Nadarajen Veerapen
  • Gabriela Ochoa
Conference paper
Part of the Lecture Notes in Computer Science book series (LNCS, volume 10196)


High order mutation analysis of a software engineering benchmark, including schema and local optima networks, suggests program improvements may not be as hard to find as is often assumed. (1) Bit-wise genetic building blocks are not deceptive and can lead to all global optima. (2) There are many neutral networks, plateaux and local optima, nevertheless in most cases near the human written C source code there are hill climbing routes including neutral moves to solutions.


Genetic improvement Genetic algorithms Genetic programming Software engineering Heuristic methods Test equivalent higher order mutants Fitness landscape Local search 


  1. 1.
    Langdon, W.B.: Genetically improved software. In: Gandomi, A.H., et al. (eds.) Handbook of Genetic Programming Applications, pp. 181–220. Springer, New York (2015).
  2. 2.
    Langdon, W.B.: Genetic improvement of software for multiple objectives. In: Barros, M., Labiche, Y. (eds.) SSBSE 2015. LNCS, vol. 9275, pp. 12–28. Springer, Heidelberg (2015). doi: 10.1007/978-3-319-22183-0_2.
  3. 3.
    Petke, J.: Preface to the special issue on genetic improvement. Genet. Program. Evolvable Mach. (2017). Editorial Note,
  4. 4.
    Harman, M., Jones, B.F.: Search based software engineering. Inf. Softw. Technol. 43(14), 833–839 (2001). CrossRefGoogle Scholar
  5. 5.
    Koza, J.R.: Genetic Programming: On the Programming of Computers by Natural Selection. MIT Press, Cambridge (1992).
  6. 6.
    Banzhaf, W., Nordin, P., Keller, R.E., Francone, F.D.: Genetic Programming: An Introduction On the Automatic Evolution of Computer Programs and its Applications. Morgan Kaufmann, San Francisco (1998).
  7. 7.
    Poli, R., Langdon, W.B., McPhee, N.F.: A field guide to genetic programming. Published via and freely available at (2008). (With contributions by Koza, J.R.),
  8. 8.
    Arcuri, A., Yao, X.: A novel co-evolutionary approach to automatic software bug fixing. In: Wang, J. (ed.) 2008 IEEE World Congress on Computational Intelligence, Hong Kong, pp. 162–168. IEEE (2008).
  9. 9.
    Weimer, W., Nguyen, T., Le Goues, C., Forrest, S.: Automatically finding patches using genetic programming. In: Fickas, S. (ed.) 2009 International Conference on Software Engineering (ICSE), Vancouver, pp. 364–374 (2009).
  10. 10.
    Forrest, S., Nguyen, T., Weimer, W., Le Goues, C.: A genetic programming approach to automated software repair. In: Raidl, G., et al. (eds.) GECCO, Montreal, pp. 947–954. ACM (2009). Best paper,
  11. 11.
    Weimer, W., Forrest, S., Le Goues, C., Nguyen, T.: Automatic program repair with evolutionary computation. Commun. ACM. 53(5), 109–116 (2010).
  12. 12.
    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.) 34th International Conference on Software Engineering (ICSE 2012), Zurich, pp. 3–13 (2012).
  13. 13.
    Le Goues, C., Nguyen, T., Forrest, S., Weimer, W.: GenProg: a generic method for automatic software repair. IEEE Trans. Softw. Eng. 38(1), 54–72 (2012).
  14. 14.
    Le Goues, C., Forrest, S., Weimer, W.: Current challenges in automatic software repair. Softw. Qual. J. 21, 421–443 (2013).
  15. 15.
    Ke, Y., Stolee, K.T., Le Goues, C., Brun, Y.: Repairing programs with semantic code search. In: Grunske, L., Whalen, M. (eds.) 30th IEEE/ACM International Conference on Automated Software Engineering (ASE 2015), Lincoln, Nebraska, USA (2015).
  16. 16.
    Kocsis, Z.A., Drake, J.H., Carson, D., Swan, J.: Automatic improvement of Apache Spark queries using semantics-preserving program reduction. In: Petke, J., et al. (eds.) 2016 Workshop on Genetic Improvement, Denver, pp. 1141–1146. ACM (2016).
  17. 17.
    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). doi: 10.1007/978-3-662-44303-3_12.
  18. 18.
    Marginean, A., Barr, E.T., Harman, M., Jia, Y.: Automated transplantation of call graph and layout features into kate. In: Barros, M., Labiche, Y. (eds.) SSBSE 2015. LNCS, vol. 9275, pp. 262–268. Springer, Heidelberg (2015). doi: 10.1007/978-3-319-22183-0_21.
  19. 19.
    Barr, E.T., Harman, M., Jia, Y., Marginean, A., Petke, J.: Automated software transplantation. In: Xie, T., Young, M. (eds.) International Symposium on Software Testing and Analysis, ISSTA 2015, Baltimore, Maryland, USA, pp. 257–269. ACM (2015). ACM SIGSOFT Distinguished Paper Award,
  20. 20.
    Harman, M., Jia, Y., Langdon, W.B.: Babel Pidgin: SBSE can grow and graft entirely new functionality into a real world system. In: Goues, C., Yoo, S. (eds.) SSBSE 2014. LNCS, vol. 8636, pp. 247–252. Springer, Heidelberg (2014). doi: 10.1007/978-3-319-09940-8_20.
  21. 21.
    Jia, Y., Harman, M., Langdon, W.B., Marginean, A.: Grow and serve: growing django citation services using SBSE. In: Barros, M., Labiche, Y. (eds.) SSBSE 2015. LNCS, vol. 9275, pp. 269–275. Springer, Heidelberg (2015). doi: 10.1007/978-3-319-22183-0_22.
  22. 22.
    Langdon, W.B., White, D.R., Harman, M., Jia, Y., Petke, J.: API-constrained genetic improvement. In: Sarro, F., Deb, K. (eds.) SSBSE 2016. LNCS, vol. 9962, pp. 224–230. Springer, Heidelberg (2016). doi: 10.1007/978-3-319-47106-8_16.
  23. 23.
    Langdon, W.B., Harman, M.: Optimising existing software with genetic programming. IEEE Trans. Evol. Comput. 19(1), 118–135 (2015).
  24. 24.
    Langdon, W.B., Lam, B.Y.H., Modat, M., Petke, J., Harman, M.: Genetic improvement of GPU software. Genet. Program. Evolvable Mach. (2017). Online first,
  25. 25.
    White, D.R., Arcuri, A., Clark, J.A.: Evolutionary improvement of programs. IEEE Trans. Evol. Comput. 15(4), 515–538 (2011).
  26. 26.
    Bruce, B.R., Petke, J., Harman, M.: Reducing energy consumption using genetic improvement. In: Silva, S., et al. (eds.) GECCO, Madrid, Spain, ACM, pp. 1327–1334 ACM (2015).
  27. 27.
    Bruce, B.R.: Energy optimisation via genetic improvement a SBSE technique for a new era in software development. In: Langdon, W.B., et al. (eds.) 2015 Workshop on Genetic Improvement, Madrid, pp. 819–820. ACM (2015).
  28. 28.
    Burles, N., Bowles, E., Brownlee, A.E.I., Kocsis, Z.A., Swan, J., Veerapen, N.: Object-oriented genetic improvement for improved energy consumption in Google Guava. In: Barros, M., Labiche, Y. (eds.) SSBSE 2015. LNCS, vol. 9275, pp. 255–261. Springer, Heidelberg (2015). doi: 10.1007/978-3-319-22183-0_20.
  29. 29.
    Burles, N., Bowles, E., Bruce, B.R., Srivisut, K.: Specialising Guava’s cache to reduce energy consumption. In: Barros, M., Labiche, Y. (eds.) SSBSE 2015. LNCS, vol. 9275, pp. 276–281. Springer, Heidelberg (2015). doi: 10.1007/978-3-319-22183-0_23.
  30. 30.
    Bokhari, M., Wagner, M.: Optimising energy consumption heuristically on android mobile phones. In: Petke, J., et al. (eds.) Genetic Improvement 2016 Workshop, Denver, pp. 1139–1140. ACM (2016).
  31. 31.
    Haraldsson, S.O., Woodward, J.R.: Genetic improvement of energy usage is only as reliable as the measurements are accurate. In: Langdon, W.B., et al. (eds.) Genetic Improvement 2015 Workshop, Madrid, pp. 831–832. ACM (2015).
  32. 32.
    Langdon, W.B., Petke, J., Bruce, B.R.: Optimising quantisation noise in energy measurement. In: Handl, J., Hart, E., Lewis, P.R., López-Ibáñez, M., Ochoa, G., Paechter, B. (eds.) PPSN 2016. LNCS, vol. 9921, pp. 249–259. Springer, Heidelberg (2016). doi: 10.1007/978-3-319-45823-6_23.
  33. 33.
    Schulte, E., Dorn, J., Harding, S., Forrest, S., Weimer, W.: Post-compiler software optimization for reducing energy. In: Proceedings of the 19th International Conference on Architectural Support for Programming Languages and Operating Systems, ASPLOS 2014, Salt Lake City, Utah, USA, pp. 639–652. ACM (2014).
  34. 34.
    Wagner, M.: Speeding up the proof strategy in formal software verification. In: Petke, J., et al. (eds.) Genetic Improvement 2016 Workshop, Denver, pp. 1137–1138 ACM (2016).
  35. 35.
    Wu, F., Weimer, W., Harman, M., Jia, Y., Krinke, J.: Deep parameter optimisation. In: Silva, S., et al. (eds.) GECCO, Madrid, pp. 1375–1382. ACM (2015).
  36. 36.
    Walsh, P., Ryan, C.: Automatic conversion of programs from serial to parallel using genetic programming - the paragen system. In: D’Hollander, E.H., et al. (eds.) Proceedings of ParCo 1995, Volume 11 of Advances in Parallel Computing, Gent, Belgium, pp. 415–422. Elsevier (1995).
  37. 37.
    Williams, K.P.: Evolutionary algorithms for automatic parallelization. Ph.D. thesis, Department of Computer Science, University of Reading, Whiteknights Campus, Reading (1998).
  38. 38.
    Williams, K.P., Williams, S.A.: Genetic compilers: a new technique for automatic parallelisation. In: 2nd European School of Parallel Programming Environments (ESPPE 1996), L’Alpe d’Hoez, France, pp. 27–30 (1996).
  39. 39.
    Langdon, W.B., Harman, M.: Evolving a CUDA kernel from an nVidia template. In: Sobrevilla, P., (ed.) 2010 IEEE World Congress on Computational Intelligence, Barcelona, pp. 2376–2383. IEEE (2010).
  40. 40.
    White, D.R., Clark, J., Jacob, J., Poulding, S.M.: Searching for resource-efficient programs: low-power pseudorandom number generators. In: Keijzer, M. et al., (eds.) GECCO, Atlanta, GA, USA, pp. 1775–1782. ACM (2008).
  41. 41.
    White, D.R.: Genetic programming for low-resource systems. Ph.D. thesis, Department of Computer Science, University of York, UK (2009).
  42. 42.
    Yeboah-Antwi, K., Baudry, B.: Embedding adaptivity in software systems using the ECSELR framework. In: Langdon, W.B., et al. (eds.): Genetic Improvement 2015 Workshop, Madrid, pp. 839–844. ACM (2015).
  43. 43.
    Mrazek, V., Vasicek, Z., Sekanina, L.: Evolutionary approximation of software for embedded systems: median function. In: Langdon, W.B., et al. (eds.) Genetic Improvement 2015 Workshop, Madrid, pp. 795–801. ACM (2015).
  44. 44.
    Burles, N., Swan, J., Bowles, E., Brownlee, A.E.I., Kocsis, Z.A., Veerapen, N.: Embedded dynamic improvement. In: Langdon, W.B., et al. (eds.) Genetic Improvement 2015 Workshop, Madrid, pp. 831–832. ACM (2015).
  45. 45.
    Vasicek, Z., Mrazek, V.: Trading between quality and non-functional properties of median filter in embedded systems. Genet. Program. Evolvable Mach. (2017). Online first,
  46. 46.
    Petke, J.: Genetic improvement for code obfuscation. In: Petke, J., et al. (eds.) Genetic Improvement 2016 Workshop, Denver, pp. 1135–1136. ACM (2016).
  47. 47.
    Harman, M., Jia, Y., Langdon, W.B., Petke, J., Moghadam, I.H., Yoo, S., Wu, F.: Genetic improvement for adaptive software engineering. In: Engels, G. (ed.) 9th International Symposium on Software Engineering for Adaptive and Self-Managing Systems (SEAMS 2014), Hyderabad, India, pp. 1–4. ACM (2014). Keynote,
  48. 48.
    Landsborough, J., Harding, S., Fugate, S.: Removing the kitchen sink from software. In: Langdon, W.B., et al. (eds.) Genetic Improvement 2015 Workshop, Madrid, pp. 833–838. ACM (2015).
  49. 49.
    Harman, M., Jia, Y., Krinke, J., Langdon, W.B., Petke, J., Zhang, Y.: Search based software engineering for software product line engineering: a survey and directions for future work. In: 18th International Software Product Line, SPLC 2014, Florence, Italy, pp. 5–18 (2014). Invited keynote,
  50. 50.
    Lopez-Herrejon, R.E., Linsbauer, L., Assuncao, W.K.G., Fischer, S., Vergilio, S.R., Egyed, A.: Genetic improvement for software product lines: an overview and a roadmap. In: Langdon, W.B., et al. (eds.) Genetic Improvement 2015 Workshop, Madrid, pp. 823–830. ACM (2015).
  51. 51.
    Langdon, W.B., Petke, J., White, D.R.: Genetic improvement 2015 chairs’ welcome. In: Langdon, W.B., et al. (eds.) Genetic Improvement 2015 Workshop, Madrid, pp. 791–792. ACM (2015).
  52. 52.
    Langdon, W.B., Harman, M.: Fitness landscape of the triangle program. In: Veerapen, N., Ochoa, G. (eds.) PPSN-2016 Workshop on Landscape-Aware Heuristic Search, Edinburgh (2016). Also available as UCL RN/16/05,
  53. 53.
    Langdon, W.B., Petke, J.: Software is not fragile. In: Parrend, P., et al. (eds.) CS-DC 2015, pp. 203–211. Springer, Cham (2015). Invited talk,
  54. 54.
    Jia, Y., Harman, M.: An analysis and survey of the development of mutation testing. IEEE Trans. Softw. Eng. 37(5), 649–678 (2011)CrossRefGoogle Scholar
  55. 55.
    Langdon, W.B., Harman, M., Jia, Y.: Efficient multi-objective higher order mutation testing with genetic programming. J. Syst. Softw. 83(12), 2416–2430 (2010).
  56. 56.
    Cody-Kenny, B., Lopez, E.G., Barrett, S.: locoGP: improving performance by genetic programming Java source code. In: Langdon, W.B., et al. (eds.) Genetic Improvement 2015 Workshop, Madrid, pp. 811–818. ACM (2015).
  57. 57.
    Orlov, M., Sipper, M.: Flight of the FINCH through the Java wilderness. IEEE Trans. Evol. Comput. 15(2), 166–182 (2011).
  58. 58.
    Schulte, E., Forrest, S., Weimer, W.: Automated program repair through the evolution of assembly code. In: Proceedings of the IEEE/ACM International Conference on Automated Software Engineering, Antwerp, pp. 13–316. ACM (2010).
  59. 59.
    Schulte, E., Fry, Z.P., Fast, E., Weimer, W., Forrest, S.: Software mutational robustness. Genet. Program. Evolvable Mach. 15(3), 281–312 (2014).
  60. 60.
    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: Langdon, W.B., et al. (eds.) Genetic Improvement 2015 Workshop, Madrid, pp. 847–854. ACM (2015). Best Paper,
  61. 61.
    Wright, S.: The roles of mutation, inbreeding, crossbreeding and selection in evolution. In: Proceedings of the Sixth Annual Congress of Genetics, pp. 356–366 (1932).
  62. 62.
    Reidys, C.M., Stadler, P.F.: Combinatorial landscapes. SIAM Rev. 44(1), 3–54 (2002). MathSciNetCrossRefzbMATHGoogle Scholar
  63. 63.
    Holland, J.H.: Genetic algorithms and the optimal allocation of trials. SIAM J. Comput. 2, 88–105 (1973). MathSciNetCrossRefzbMATHGoogle Scholar
  64. 64.
    Goldberg, D.E.: Genetic Algorithms in Search Optimization and Machine Learning. Addison-Wesley, Boston (1989)zbMATHGoogle Scholar
  65. 65.
    Daolio, F., Tomassini, M., Verel, S., Ochoa, G.: Communities of minima in local optima networks of combinatorial spaces. Phys. A: Stat. Mech. Appl. 390(9), 1684–1694 (2011). CrossRefGoogle Scholar
  66. 66.
    Ochoa, G., Verel, S., Daolio, F., Tomassini, M.: Local optima networks: a new model of combinatorial fitness landscapes. In: Richter, H., Engelbrecht, A. (eds.) Recent Advances in the Theory and Application of Fitness Landscapes, pp. 233–262. Springer, Berlin (2014). CrossRefGoogle Scholar
  67. 67.
    Ochoa, G., Veerapen, N.: Additional dimensions to the study of funnels in combinatorial landscapes. In: GECCO, pp. 373–380. ACM (2016)

Copyright information

© Springer International Publishing AG 2017

Authors and Affiliations

  • William B. Langdon
    • 1
    Email author
  • Nadarajen Veerapen
    • 2
  • Gabriela Ochoa
    • 2
  1. 1.CREST, Computer ScienceUCLLondonUK
  2. 2.Computing Science and MathematicsUniversity of StirlingStirlingUK

Personalised recommendations