Evolving Data Structures Using Genetic Programming
W. Langdon. Research Note, RN/95/1. UCL, Gower Street, London, WC1E 6BT, UK, (January 1995)
Abstract
Genetic programming (GP) is a subclass of genetic
algorithms (GAs), in which evolving programs are
directly represented in the chromosome as trees.
Recently it has been shown that programs which
explicitly use directly addressable memory can be
generated using GP.
It is established good software engineering practice to
ensure that programs use memory via abstract data
structures such as stacks, queues and lists. These
provide an interface between the program and memory,
freeing the program of memory management details which
are left to the data structures to implement. The main
result presented herein is that GP can automatically
generate stacks and queues.
Typically abstract data structures support multiple
operations, such as put and get. We show that GP can
simultaneously evolve all the operations of a data
structure by implementing each such operation with its
own independent program tree. That is, the chromosome
consists of a fixed number of independent program
trees. Moreover, crossover only mixes genetic material
of program trees that implement the same operation.
Program trees interact with each other only via shared
memory and shared ``Automatically Defined Functions''
(ADFs).
ADFs, ``pass by reference'' when calling them, Pareto
selection, ``good software engineering practice'' and
partitioning the genetic population into ``demes''
where also investigated whilst evolving the queue in
order to improve the GP solutions.
%0 Report
%1 Langdon:1995:GPdataRN
%A Langdon, W. B.
%C Gower Street, London, WC1E 6BT, UK
%D 1995
%K (ADF), (FIFO) Artificial Automatic Automatically Data Defined Demes Evolution, First-in Functions Learning, Machine Object Oriented Pareto Programming, Push Queue, Stack, Structures, algorithms, down first-out fitness, genetic programming,
%N RN/95/1
%T Evolving Data Structures Using Genetic Programming
%U http://www.cs.ucl.ac.uk/staff/W.Langdon/ftp/papers/GPdata_icga-95.ps
%X Genetic programming (GP) is a subclass of genetic
algorithms (GAs), in which evolving programs are
directly represented in the chromosome as trees.
Recently it has been shown that programs which
explicitly use directly addressable memory can be
generated using GP.
It is established good software engineering practice to
ensure that programs use memory via abstract data
structures such as stacks, queues and lists. These
provide an interface between the program and memory,
freeing the program of memory management details which
are left to the data structures to implement. The main
result presented herein is that GP can automatically
generate stacks and queues.
Typically abstract data structures support multiple
operations, such as put and get. We show that GP can
simultaneously evolve all the operations of a data
structure by implementing each such operation with its
own independent program tree. That is, the chromosome
consists of a fixed number of independent program
trees. Moreover, crossover only mixes genetic material
of program trees that implement the same operation.
Program trees interact with each other only via shared
memory and shared ``Automatically Defined Functions''
(ADFs).
ADFs, ``pass by reference'' when calling them, Pareto
selection, ``good software engineering practice'' and
partitioning the genetic population into ``demes''
where also investigated whilst evolving the queue in
order to improve the GP solutions.
@techreport{Langdon:1995:GPdataRN,
abstract = {Genetic programming (GP) is a subclass of genetic
algorithms (GAs), in which evolving programs are
directly represented in the chromosome as trees.
Recently it has been shown that programs which
explicitly use directly addressable memory can be
generated using GP.
It is established good software engineering practice to
ensure that programs use memory via abstract data
structures such as stacks, queues and lists. These
provide an interface between the program and memory,
freeing the program of memory management details which
are left to the data structures to implement. The main
result presented herein is that GP can automatically
generate stacks and queues.
Typically abstract data structures support multiple
operations, such as put and get. We show that GP can
simultaneously evolve all the operations of a data
structure by implementing each such operation with its
own independent program tree. That is, the chromosome
consists of a fixed number of independent program
trees. Moreover, crossover only mixes genetic material
of program trees that implement the same operation.
Program trees interact with each other only via shared
memory and shared ``Automatically Defined Functions''
(ADFs).
ADFs, ``pass by reference'' when calling them, Pareto
selection, ``good software engineering practice'' and
partitioning the genetic population into ``demes''
where also investigated whilst evolving the queue in
order to improve the GP solutions.},
added-at = {2008-06-19T17:35:00.000+0200},
address = {Gower Street, London, WC1E 6BT, UK},
author = {Langdon, W. B.},
biburl = {https://www.bibsonomy.org/bibtex/2b52703d8dc168e49002e9fea722667b2/brazovayeye},
institution = {UCL},
interhash = {8da93f3c7dffaeb910b499ec22ea2161},
intrahash = {b52703d8dc168e49002e9fea722667b2},
keywords = {(ADF), (FIFO) Artificial Automatic Automatically Data Defined Demes Evolution, First-in Functions Learning, Machine Object Oriented Pareto Programming, Push Queue, Stack, Structures, algorithms, down first-out fitness, genetic programming,},
month = {January},
notes = {Discussed on GP mailing list 6--13 Jan 95,
subj:GPdata. Presented at ICGA-95. Reworked into
\cite{Langdon:1995:GPdata}},
number = {RN/95/1},
size = {10 pages},
timestamp = {2008-06-19T17:44:42.000+0200},
title = {Evolving Data Structures Using Genetic Programming},
type = {Research Note},
url = {http://www.cs.ucl.ac.uk/staff/W.Langdon/ftp/papers/GPdata_icga-95.ps},
year = 1995
}