Automatic programming using genetic programming

Author(s):  
Kevin Igwe ◽  
Nelishia Pillay
Author(s):  
Michael A. Lones ◽  
Andy M. Tyrrell

Programming is a process of optimization; taking a specification, which tells us what we want, and transforming it into an implementation, a program, which causes the target system to do exactly what we want. Conventionally, this optimization is achieved through manual design. However, manual design can be slow and error-prone, and recently there has been increasing interest in automatic programming; using computers to semiautomate the process of refining a specification into an implementation. Genetic programming is a developing approach to automatic programming, which, rather than treating programming as a design process, treats it as a search process. However, the space of possible programs is infinite, and finding the right program requires a powerful search process. Fortunately for us, we are surrounded by a monotonous search process capable of producing viable systems of great complexity: evolution. Evolution is the inspiration behind genetic programming. Genetic programming copies the process and genetic operators of biological evolution but does not take any inspiration from the biological representations to which they are applied. It can be argued that the program representation that genetic programming does use is not well suited to evolution. Biological representations, by comparison, are a product of evolution and, a fact to which this book is testament, describe computational structures. This chapter is about enzyme genetic programming, a form of genetic programming that mimics biological representations in an attempt to improve the evolvability of programs. Although it would be an advantage to have a familiarity with both genetic programming and biological representations, concise introductions to both these subjects are provided. According to modern biological understanding, evolution is solely responsible for the complexity we see in the structure and behavior of biological organisms. Nevertheless, evolution itself is a simple process that can occur in any population of imperfectly replicating entities where the right to replicate is determined by a process of selection. Consequently, given an appropriate model of such an environment, evolution can also occur within computers.


Author(s):  
FREDERICK E. PETRY ◽  
BERTRAND DANIEL DUNAY

Automatic programming is discussed in the context of software engineering. An approach to automatic programming is presented, which utilizes software engineering principles in the synthesis and maintenance of programs. As a simple demonstration, program-equivalent Turing machines are synthesized, encapsulated, reused, and maintained by genetic programming. Turing machines are synthesized from input-output pairs for a variety of simple problems. When a problem is solved, the solution is encapsulated and becomes part of a software library. The genetic program uses the library to solve new problems by combining library components with program primitives to synthesize new programs. When a new problem is solved or a known problem is solved more efficiently, the genetic program maintains the library so as to keep it valid and efficient.


Sign in / Sign up

Export Citation Format

Share Document