6533b851fe1ef96bd12a968e
RESEARCH PRODUCT
Teaching GP to program like a human software developer
Dominik SobaniaFranz Rothlaufsubject
Perplexitybusiness.industryProgramming languageComputer scienceInitializationGenetic programming0102 computer and information sciences02 engineering and technologycomputer.software_genre01 natural sciencesSoftware010201 computation theory & mathematicsGrammatical evolution0202 electrical engineering electronic engineering information engineeringCode (cryptography)020201 artificial intelligence & image processingLanguage modelbusinesscomputerProgram synthesisdescription
Program synthesis is one of the relevant applications of GP with a strong impact on new fields such as genetic improvement. In order for synthesized code to be used in real-world software, the structure of the programs created by GP must be maintainable. We can teach GP how real-world software is built by learning the relevant properties of mined human-coded software - which can be easily accessed through repository hosting services such as GitHub. So combining program synthesis and repository mining is a logical step. In this paper, we analyze if GP can write programs with properties similar to code produced by human software developers. First, we compare the structure of functions generated by different GP initialization methods to a mined corpus containing real-world software. The results show that the studied GP initialization methods produce a totally different combination of programming language elements in comparison to real-world software. Second, we propose perplexity pressure and analyze how its use changes the properties of code produced by GP. The results are very promising and show that we can guide the search to the desired program structure. Thus, we recommend using perplexity pressure as it can be easily integrated in various search-based algorithms.
year | journal | country | edition | language |
---|---|---|---|---|
2019-07-13 | Proceedings of the Genetic and Evolutionary Computation Conference |