Genetic improvement of data for maths functions

Genetic Improvement (GI) can be used to give better quality software and to create new functionality. We show that GI can evolve the PowerPC open source GNU C runtime library square root function into cube root, binary logarithm log2 and reciprocal square root. The GI cbrt is competitive in run-time performance and our inverted square root x-1/2 is far more accurate than the approximation used in the Quake video game. We use CMA-ES to adapt constants in a Newton-Raphson table, originally from glibc's sqrt, for other double precision mathematics functions. Such automatically customised math libraries might be used for mobile or low resource, IoT, mote, smart dust, bespoke cyber-physical systems. Evolutionary Computing (EC) can be used to not only adapt source code but also data, such as numerical constants, and could enable a new way to conduct software data maintenance. This is an exciting opportunity for the GECCO and optimisation communities.

[1]  Bobby R. Bruce Energy Optimisation via Genetic Improvement: A SBSE technique for a new era in Software Development , 2015, GECCO.

[2]  Westley Weimer,et al.  Repairing COTS Router Firmware without Access to Source Code or Test Suites: A Case Study in Evolutionary Software Repair , 2015, GECCO.

[3]  John R. Koza,et al.  Automated synthesis of computational circuits using genetic programming , 1997, Proceedings of 1997 IEEE International Conference on Evolutionary Computation (ICEC '97).

[4]  Simon Butler,et al.  Analysing Java identifier names , 2016 .

[5]  Mark Harman,et al.  Babel Pidgin: SBSE Can Grow and Graft Entirely New Functionality into a Real World System , 2014, SSBSE.

[6]  Myra B. Cohen,et al.  An orchestrated survey of methodologies for automated software test case generation , 2013, J. Syst. Softw..

[7]  Mark Harman,et al.  Using Genetic Improvement and Code Transplants to Specialise a C++ Program to a Problem Class , 2014, EuroGP.

[8]  Wilma M. Osborne,et al.  Guidance on software maintenance , 1983 .

[9]  Mark Harman,et al.  Review of "Genetic Programming and Evolvable Machines: Special Issue on Semantic Methods in Genetic Programming" , 2016, SEVO.

[10]  John R. Woodward,et al.  Connecting Automatic Parameter Tuning, Genetic Programming as a Hyper-heuristic, and Genetic Improvement Programming , 2016, GECCO.

[11]  John A. Clark,et al.  Searching for resource-efficient programs: low-power pseudorandom number generators , 2008, GECCO '08.

[12]  William B. Langdon,et al.  Genetically Improved Software , 2015, Handbook of Genetic Programming Applications.

[13]  Hongyang Jia,et al.  Genetic Programming for Energy-Efficient and Energy-Scalable Approximate Feature Computation in Embedded Inference Systems , 2018, IEEE Transactions on Computers.

[14]  Peter W. Markstein Computation of Elementary Functions on the IBM RISC System/6000 Processors , 1990, IBM J. Res. Dev..

[15]  Mark Harman,et al.  Grow and Graft a Better CUDA pknotsRG for RNA Pseudoknot Free Energy Calculation , 2015, GECCO.

[16]  Mark Harman,et al.  Grow and Serve: Growing Django Citation Services Using SBSE , 2015, SSBSE.

[17]  Mark Harman,et al.  Automated software transplantation , 2015, ISSTA.

[18]  Mark Harman,et al.  Ieee Transactions on Evolutionary Computation 1 , 2022 .

[19]  Westley Weimer,et al.  Post-compiler software optimization for reducing energy , 2014, ASPLOS.

[20]  Nafiseh Hajrahimi,et al.  Which Factors Affect Software Projects Maintenance Cost More? , 2013, Acta informatica medica : AIM : journal of the Society for Medical Informatics of Bosnia & Herzegovina : casopis Drustva za medicinsku informatiku BiH.

[21]  John A. Clark,et al.  Evolutionary Improvement of Programs , 2011, IEEE Transactions on Evolutionary Computation.

[22]  Justyna Petke,et al.  Deep Parameter Optimisation for Face Detection Using the Viola-Jones Algorithm in OpenCV , 2016, SSBSE.

[23]  Günther Ruhe,et al.  Search Based Software Engineering , 2013, Lecture Notes in Computer Science.

[24]  William B. Langdon,et al.  Genetic Improvement of Data for Maths Functions , 2021, ACM Trans. Evol. Learn. Optim..

[25]  William B. Langdon,et al.  Genetic Improvement of Programs , 2014, 2014 16th International Symposium on Symbolic and Numeric Algorithms for Scientific Computing.

[26]  Lukás Sekanina,et al.  Cooperative Coevolutionary Approximation in HOG-based Human Detection Embedded System , 2018, 2018 IEEE Symposium Series on Computational Intelligence (SSCI).

[27]  Zdenek Vasícek,et al.  Trading between quality and non-functional properties of median filter in embedded systems , 2017, Genetic Programming and Evolvable Machines.

[28]  Lukás Sekanina,et al.  Approximating complex arithmetic circuits with formal error guarantees: 32-bit multipliers accomplished , 2017, 2017 IEEE/ACM International Conference on Computer-Aided Design (ICCAD).

[29]  Jerry Swan,et al.  Deep Parameter Tuning of Concurrent Divide and Conquer Algorithms in Akka , 2017, EvoApplications.

[30]  William B. Langdon,et al.  Evolving Better RNAfold Structure Prediction , 2018, EuroGP.

[31]  Fan Wu,et al.  Deep Parameter Optimisation , 2015, GECCO.

[32]  William B. Langdon,et al.  Automatically Evolving Lookup Tables for Function Approximation , 2020, EuroGP.

[33]  William B. Langdon,et al.  Optimising Quantisation Noise in Energy Measurement , 2016, PPSN.

[34]  Des Greer,et al.  A survey of search-based refactoring for software maintenance , 2018, Journal of Software Engineering Research and Development.

[35]  Moshe Sipper,et al.  Flight of the FINCH Through the Java Wilderness , 2011, IEEE Transactions on Evolutionary Computation.

[36]  William B. Langdon,et al.  Evolving Better Software Parameters , 2018, SSBSE.

[37]  Oliver Krauss,et al.  Evolving sqrt into 1/x via software data maintenance , 2020, GECCO Companion.

[38]  William B. Langdon,et al.  Genetic Improvement of Software for Multiple Objectives , 2015, SSBSE.

[39]  Mariano Ceccato,et al.  Automatic generation of opaque constants based on the k-clique problem for resilient data obfuscation , 2017, 2017 IEEE 24th International Conference on Software Analysis, Evolution and Reengineering (SANER).

[40]  David R. White GI in no time , 2017, GECCO.

[41]  Shin Yoo,et al.  Amortised Deep Parameter Optimisation of GPGPU Work Group Size for OpenCV , 2016, SSBSE.

[42]  Mark Harman,et al.  Automated Transplantation of Call Graph and Layout Features into Kate , 2015, SSBSE.

[43]  Claire Le Goues,et al.  Automated program repair , 2019, Commun. ACM.

[44]  Brad J. Alexander,et al.  Constructing an optimisation phase using Grammatical Evolution , 2009, 2009 IEEE Congress on Evolutionary Computation.

[45]  Swarat Chaudhuri,et al.  Program Splicing , 2018, 2018 IEEE/ACM 40th International Conference on Software Engineering (ICSE).

[46]  Markus Wagner,et al.  Deep parameter optimisation on Android smartphones for energy minimisation: a tale of woe and a proof-of-concept , 2017, GECCO.

[47]  Justyna Petke,et al.  Constraints: The Future of Combinatorial Interaction Testing , 2015, 2015 IEEE/ACM 8th International Workshop on Search-Based Software Testing.

[48]  Justyna Petke Preface to the Special Issue on Genetic Improvement , 2016, Genetic Programming and Evolvable Machines.

[49]  Bobby R. Bruce The blind software engineer: improving the non-functional properties of software by means of genetic improvement , 2018 .

[50]  Westley Weimer,et al.  Automated program repair through the evolution of assembly code , 2010, ASE.

[51]  Petr Marounek,et al.  Simplified approach to effort estimation in software maintenance , 2012 .

[52]  Kevin P. Murphy,et al.  Efficient parameter estimation for RNA secondary structure prediction , 2007, ISMB/ECCB.

[53]  W. B. Langdon,et al.  Genetic improvement of data gives double precision invsqrt , 2019, GECCO.

[54]  Justyna Petke,et al.  Genetic improvement of data gives binary logarithm from sqrt , 2019, GECCO.

[55]  U. Platt,et al.  Numerical analysis of the chemical kinetic mechanisms of ozone depletion and halogen release in the polar troposphere , 2013 .

[56]  Mark Harman,et al.  Genetic Improvement of Software: A Comprehensive Survey , 2018, IEEE Transactions on Evolutionary Computation.

[57]  Peter F. Stadler,et al.  ViennaRNA Package 2.0 , 2011, Algorithms for Molecular Biology.

[58]  Lejla Batina,et al.  Rosita: Towards Automatic Elimination of Power-Analysis Leakage in Ciphers , 2019, IACR Cryptol. ePrint Arch..

[59]  P. Parrend,et al.  Software is Not Fragile , 2016 .

[60]  Jerffeson Teixeira de Souza,et al.  Ten Years of Search Based Software Engineering: A Bibliometric Analysis , 2011, SSBSE.

[61]  Mark Harman,et al.  Evolving a CUDA kernel from an nVidia template , 2010, IEEE Congress on Evolutionary Computation.

[62]  Nikolaus Hansen,et al.  Completely Derandomized Self-Adaptation in Evolution Strategies , 2001, Evolutionary Computation.

[63]  Hideyuki Takagi,et al.  Interactive evolutionary computation: fusion of the capabilities of EC optimization and human evaluation , 2001, Proc. IEEE.

[64]  Fan Wu,et al.  Mutation-based genetic improvement of software , 2017 .

[65]  Alexander E. I. Brownlee,et al.  Object-Oriented Genetic Improvement for Improved Energy Consumption in Google Guava , 2015, SSBSE.