Abstract
Genetic improvement (GI) uses automated search to find improved versions of existing software. While most GI work use genetic programming (GP) as the underlying search process, focus is usually given to the target software only. As a result, specifics of GP algorithms for GI are not well understood and rarely compared to one another. In this work, we propose a robust experimental protocol to compare different GI search processes and investigate several variants of GP- and random-based approaches. Through repeated experiments, we report a comparative analysis of these approaches, using one of the previously used GI scenarios: improvement of runtime of the MiniSAT satisfiability solver. We conclude that the test suites used have the most significant impact on the GI results. Both random and GP-based approaches are able to find improved software, even though the percentage of viable software variants is significantly smaller in the random case (\(14.5\%\) vs. \(80.1\%\)). We also report that GI produces MiniSAT variants up to twice as fast as the original on sets of previously unseen instances from the same application domain.
This is a preview of subscription content, log in via an institution.
Buying options
Tax calculation will be finalised at checkout
Purchases are for personal use only
Learn about institutional subscriptionsNotes
- 1.
- 2.
- 3.
- 4.
- 5.
Fastest SAT instances, fastest UNSAT instances, SAT instances, UNSAT instances, and slowest (both SAT or UNSAT) instances. Respective bin sizes: 50, 37, 17, 18, 8.
- 6.
After rounding, we use \(\{p_e,p_c,p_m\} = \{1,5,4\}\), \(\{2,9,9\}\), \(\{5,23,22\}\), and \(\{10,45,45\}\).
References
An, G., Blot, A., Petke, J., Yoo, S.: PyGGI 2.0: language independent genetic improvement framework. In: Proceedings of the 27th ACM Joint Meeting on European Software Engineering Conference and Symposium on the Foundations of Software Engineering (ESEC/FSE 2019), pp. 1100–1104. ACM (2019). https://doi.org/10.1145/3338906.3341184
Arcuri, A., Yao, X.: A novel co-evolutionary approach to automatic software bug fixing. In: Proceedings of the Congress on Evolutionary Computation (CEC 2008), pp. 162–168 (2008). https://doi.org/10.1109/CEC.2008.4630793
Bruce, B.R., Petke, J., Harman, M.: Reducing energy consumption using genetic improvement. In: Proceedings of the 10th Genetic and Evolutionary Computation Conference (GECCO 2015), pp. 1327–1334. ACM (2015). https://doi.org/10.1145/2739480.2754752
Eén, N., Sörensson, N.: An extensible SAT-solver. In: Giunchiglia, E., Tacchella, A. (eds.) SAT 2003. LNCS, vol. 2919, pp. 502–518. Springer, Heidelberg (2004). https://doi.org/10.1007/978-3-540-24605-3_37
Forrest, S., Nguyen, T., Weimer, W., Le Goues, C.: A genetic programming approach to automated software repair. In: Proceedings of the 4th Genetic and Evolutionary Computation Conference (GECCO 2009), pp. 947–954. ACM (2009). https://doi.org/10.1145/1569901.1570031
Langdon, W.B., Harman, M.: Evolving a CUDA kernel from an nVidia template. In: Proceedings of the Congress on Evolutionary Computation (CEC 2010), pp. 1–8 (2010). https://doi.org/10.1109/CEC.2010.5585922
Langdon, W.B., Harman, M.: Optimizing existing software with genetic programming. IEEE Trans. Evol. Comput. 19(1), 118–135 (2015). https://doi.org/10.1109/TEVC.2013.2281544
Le, X.D., Chu, D., Lo, D., Le Goues, C., Visser, W.: S3: syntax- and semantic-guided repair synthesis via programming by examples. In: Proceedings of the ACM Joint Meeting on European Software Engineering Conference and Symposium on the Foundations of Software Engineering (ESEC/FSE 2017), pp. 593–604. ACM (2017). https://doi.org/10.1145/3106237.3106309
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: Proceedings of the 34th International Conference on Software Engineering (ICSE 2012), pp. 3–13. IEEE Computer Society (2012). https://doi.org/10.1109/ICSE.2012.6227211
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). https://doi.org/10.1109/TSE.2011.104
Petke, J., Haraldsson, S.O., Harman, M., Langdon, W.B., White, D.R., Woodward, J.R.: Genetic improvement of software: a comprehensive survey. IEEE Trans. Evol. Comput. 22(3), 415–432 (2018). https://doi.org/10.1109/TEVC.2017.2693219
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., et al. (eds.) EuroGP 2014. LNCS, vol. 8599, pp. 137–149. Springer, Heidelberg (2014). https://doi.org/10.1007/978-3-662-44303-3_12
Petke, J., Harman, M., Langdon, W.B., Weimer, W.: Specialising software for different downstream applications using genetic improvement and code transplantation. IEEE Trans. Softw. Eng. 44(6), 574–594 (2018). https://doi.org/10.1109/TSE.2017.2702606
Petke, J., Langdon, W.B., Harman, M.: Applying genetic improvement to MiniSAT. In: Ruhe, G., Zhang, Y. (eds.) SSBSE 2013. LNCS, vol. 8084, pp. 257–262. Springer, Heidelberg (2013). https://doi.org/10.1007/978-3-642-39742-4_21
Schulte, E.M., DiLorenzo, J., Weimer, W., Forrest, S.: Automated repair of binary and assembly programs for cooperating embedded devices. In: Proceedings of the 18th International Conference on Architectural Support for Programming Languages and Operating Systems (ASPLOS 2013), pp. 317–328 (2013). https://doi.org/10.1145/2451116.2451151
Weaver, V.M., Terpstra, D., Moore, S.: Non-determinism and overcount on modern hardware performance counter implementations. In: Proceedings of the 2013 International Symposium on Performance Analysis of Systems & Software (ISSTA 2013), pp. 215–224. IEEE (2013). https://doi.org/10.1109/ISPASS.2013.6557172
Weimer, W.: Patches as better bug reports. In: Proceedings of the 5th International Conference on Generative Programming and Component Engineering (GPCE 2006), pp. 181–190 (2006). https://doi.org/10.1145/1173706.1173734
Weimer, W., Nguyen, T., Le Goues, C., Forrest, S.: Automatically finding patches using genetic programming. In: Proceedings of the 31st International Conference on Software Engineering (ICSE 2009), pp. 364–374. IEEE Computer Society (2009). https://doi.org/10.1109/ICSE.2009.5070536
White, D.R., Arcuri, A., Clark, J.A.: Evolutionary improvement of programs. IEEE Trans. Evol. Comput. 15(4), 515–538 (2011). https://doi.org/10.1109/TEVC.2010.2083669
Acknowledgement
This work is supported by UK EPSRC Fellowship EP/P023991/1.
Author information
Authors and Affiliations
Corresponding author
Editor information
Editors and Affiliations
Rights and permissions
Copyright information
© 2020 Springer Nature Switzerland AG
About this paper
Cite this paper
Blot, A., Petke, J. (2020). Comparing Genetic Programming Approaches for Non-functional Genetic Improvement. In: Hu, T., Lourenço, N., Medvet, E., Divina, F. (eds) Genetic Programming. EuroGP 2020. Lecture Notes in Computer Science(), vol 12101. Springer, Cham. https://doi.org/10.1007/978-3-030-44094-7_5
Download citation
DOI: https://doi.org/10.1007/978-3-030-44094-7_5
Published:
Publisher Name: Springer, Cham
Print ISBN: 978-3-030-44093-0
Online ISBN: 978-3-030-44094-7
eBook Packages: Computer ScienceComputer Science (R0)