Simon Harding - Academia.edu (original) (raw)

Papers by Simon Harding

Research paper thumbnail of SMCGP2

Proceedings of the 13th annual conference companion on Genetic and evolutionary computation

Self Modifying Cartesian Genetic Programming 2 (SMCGP2) is a general purpose, graph-based, develo... more Self Modifying Cartesian Genetic Programming 2 (SMCGP2) is a general purpose, graph-based, developmental form of Cartesian Genetic Programming. Using a combination of computational functions and special functions that can modify the phenotype at runtime, it has been employed to find general solutions to a number of computational problems. Here, we apply the new SMCGP technique to find mathematical relationships between well known mathematical constants (i.e. pi, e, phi, omega etc) using a variety of functions sets. Some of formulae obtained are distinctly unusual and may be unknown in mathematics.

Research paper thumbnail of Evolution in Materio

Research paper thumbnail of Evolution In Materio: Investigating the Stability of Robot Controllers Evolved in Liquid Crystal

Evolvable Systems: From Biology to Hardware, 2005

In our previous work, we have demonstrated that evolution can be used to program liquid crystal t... more In our previous work, we have demonstrated that evolution can be used to program liquid crystal to act as a signal processing device. In this work we discuss the stability and reconfigurability of a real time robot controller evolved in liquid crystal. We envisage these issues will be important when programming or evolving in other physical systems.

Research paper thumbnail of A scalable platform for intrinsic hardware and in materio evolution

NASA/DoD Conference on Evolvable Hardware, 2003. Proceedings.

An evolvable motherboard is an intrinsic evolution platform that allows the detailed probing of i... more An evolvable motherboard is an intrinsic evolution platform that allows the detailed probing of internal signals of circuits that have been evolved. Several designs for an evolvable motherboard have already been demonstrated to work sucessfully as a platform for the evolution of electronic circuits. This paper proposes a new platform that is suitable for intrinsic evolution using a wider variety of media. The platform presents a more modular design, making it suitable for use in evolving more complex physcial primitives whilst affording the possiblity of performing evolution in parallel for simpler problems. The construction of the device is discussed and examples of potential experiments in silicon, liquid crystal and other media are described.

Research paper thumbnail of SMCGP2

Proceedings of the 13th annual conference on Genetic and evolutionary computation, 2011

Self Modifying Cartesian Genetic Programming is a general purpose, graph-based, developmental for... more Self Modifying Cartesian Genetic Programming is a general purpose, graph-based, developmental form of Cartesian Genetic Programming. Using a combination of computational functions and special functions that can modify the phenotype at runtime, it has been employed to find general solutions to certain Boolean circuits and mathematical problems. In the present work, a new version, of SMCGP is proposed and demonstrated. Compared to the original SMCGP both the representation and the function set have been simplified. However, the new representation is also two-dimensional and it allows evolution and development to have more ways to solve a given problem. Under most situations we show that the new method makes the evolution of solutions to even parity and binary addition faster than with previous version of SMCGP.

Research paper thumbnail of Evolution-In-Materio: Solving Machine Learning Classification Problems Using Materials

Lecture Notes in Computer Science, 2014

Evolution-in-materio (EIM) is a method that uses artificial evolution to exploit the properties o... more Evolution-in-materio (EIM) is a method that uses artificial evolution to exploit the properties of physical matter to solve computational problems without requiring a detailed understanding of such properties. EIM has so far been applied to very few computational problems. We show that using a purpose-built hardware platform called Mecobo, it is possible to evolve voltages and signals applied to physical materials to solve machine learning classification problems. This is the first time that EIM has been applied to such problems. We evaluate the approach on two standard datasets: Lenses and Iris. Comparing our technique with a well-known software-based evolutionary method indicates that EIM performs reasonably well. We suggest that EIM offers a promising new direction for evolutionary computation.

Research paper thumbnail of Evolution-in-materio: Solving bin packing problems using materials

2014 IEEE International Conference on Evolvable Systems, 2014

Evolution-in-materio (EIM) is a form of intrinsic evolution in which evolutionary algorithms are ... more Evolution-in-materio (EIM) is a form of intrinsic evolution in which evolutionary algorithms are allowed to manipulate physical variables that are applied to materials. This method aims to configure materials so that they solve computational problems without requiring a detailed understanding of the properties of the materials. The concept gained attention through the work of Adrian Thompson who in 1996 showed that evolution could be used to design circuits in FPGAS that exploited the physical properties of the underlying silicon [21]. In this paper, we show that using a purpose-built hardware platform called Mecobo, we can solve computational problems by evolving voltages, signals and the way they are applied to a microelectrode array with a chamber containing single-walled carbon nanotubes and a polymer. Here we demonstrate for the first time that this methodology can be applied to the well-known computational problem of bin packing. Results on benchmark problems show that the technique can obtain results reasonably close to the known global optima. This suggests that EIM is a promising method for configuring materials to carry out useful computation.

Research paper thumbnail of Evolution-in-materio: A frequency classifier using materials

2014 IEEE International Conference on Evolvable Systems, 2014

Evolution-in-materio (EIM) is a method that uses artificial evolution to exploit properties of ma... more Evolution-in-materio (EIM) is a method that uses artificial evolution to exploit properties of materials to solve computational problems without requiring a detailed understanding of such properties. In this paper, we describe experiments using a purpose-built EIM platform called Mecobo to classify whether an applied square wave signal is above or below a userdefined threshold. This is the first demonstration that electrical configurations of materials (carbon nanotubes and a polymer) can be evolved to act as frequency classifiers.

Research paper thumbnail of Evolution-in-materio: Solving function optimization problems using materials

2014 14th UK Workshop on Computational Intelligence (UKCI), 2014

Evolution-in-materio (EIM) is a method that uses artificial evolution to exploit properties of ma... more Evolution-in-materio (EIM) is a method that uses artificial evolution to exploit properties of materials to solve computational problems without requiring a detailed understanding of such properties. In this paper, we show that using a purpose-built hardware platform called Mecobo, it is possible to evolve voltages and signals applied to physical materials to solve computational problems. We demonstrate for the first time that this methodology can be applied to function optimization. We evaluate the approach on 23 function optimization benchmarks and in some cases results come very close to the global optimum or even surpass those provided by a well-known software-based evolutionary approach. This indicates that EIM has promise and further investigations would be fruitful.

Research paper thumbnail of Mecobo: A Hardware and Software Platform for In Materio Evolution

Lecture Notes in Computer Science, 2014

Evolution in Materio (EIM) exploits properties of physical systems to compute. "Designs" are evol... more Evolution in Materio (EIM) exploits properties of physical systems to compute. "Designs" are evolved instead of a traditional top down design approach. Computation is a product of the state(s) of the material and input data. Evolution manipulates physical processes by stimulating materials assessed in situ. A hardware software platform designed for EIM experimentation is presented. The platform with features especially for EIM is described together with demonstration experiments using carbon nanotubes in a thick film placed on micro electrode arrays.

Research paper thumbnail of Optimizing Shape Design with Distributed Parallel Genetic Programming on GPUs

Studies in Computational Intelligence, 2012

Optimized shape design is used for such applications as wing design in aircraft, hull design in s... more Optimized shape design is used for such applications as wing design in aircraft, hull design in ships, and more generally rotor optimization in turbomachinery such as that of aircraft, ships, and wind turbines. We present work on optimized shape design using a technique from the area of Genetic Programming, self-modifying Cartesian Genetic Programming (SMCGP), to evolve shapes with specific criteria, such as minimized drag or maximized lift. This technique is well suited for a distributed parallel system to increase efficiency. Fitness evaluation of the genetic programming technique is accomplished through a custom implementation of a fluid dynamics solver running on graphics processing units (GPUs). Solving fluid dynamics systems is a computationally expensive task and requires optimization in order for the evolution to complete in a practical period of time. In this chapter, we shall describe both the SMCGP technique and the GPU fluid dynamics solver that together provide a robust and efficient shape design system.

Research paper thumbnail of Humanoid learns to detect its own hands

2013 IEEE Congress on Evolutionary Computation, 2013

Robust object manipulation is still a hard problem in robotics, even more so in high degree-of-fr... more Robust object manipulation is still a hard problem in robotics, even more so in high degree-of-freedom (DOF) humanoid robots. To improve performance a closer integration of visual and motor systems is needed. We herein present a novel method for a robot to learn robust detection of its own hands and fingers enabling sensorimotor coordination. It does so solely using its own camera images and does not require any external systems or markers. Our system based on Cartesian Genetic Programming (CGP) allows to evolve programs to perform this image segmentation task in real-time on the real hardware. We show results for a Nao and an iCub humanoid each detecting its own hands and fingers.

Research paper thumbnail of GECCO 2011 tutorial

Proceedings of the 13th annual conference companion on Genetic and evolutionary computation, 2011

Cartesian Genetic Programming (CGP) is an increasingly popular and efficient form of Genetic Prog... more Cartesian Genetic Programming (CGP) is an increasingly popular and efficient form of Genetic Programming that was developed by Julian Miller in 1999 and 2000. In its classic form, it uses a very simple integer based genetic representation of a program in the form of a directed graph. Graphs are very useful program representations and can be applied to many domains (e.g. electronic circuits, neural networks). In a number of studies, CGP has been shown to be comparatively efficient to other GP techniques. It is also very simple to program. Since then, the classical form of CGP has been developed made more efficient in various ways. Notably by including automatically defined functions (modular CGP) and self-modification operators(self-modifying CGP). SMCGP was developed by Julian Miller, Simon Harding and Wolfgang Banzhaf. It uses functions that cause the evolved programs to change themselves as a function of time. Using this technique it is possible to find general solutions to classes of problems and mathematical algorithms (e.g. arbitrary parity, n-bit binary addition, sequences that provably compute pi and e to arbitrary precision, and so on). The tutorial will cover the basic technique, advanced developments and applications to a variety of problem domains.

Research paper thumbnail of Evolution of image filters on graphics processor units using Cartesian Genetic Programming

2008 IEEE Congress on Evolutionary Computation (IEEE World Congress on Computational Intelligence), 2008

Graphics processor units are fast, inexpensive parallel computing devices. Recently there has bee... more Graphics processor units are fast, inexpensive parallel computing devices. Recently there has been great interest in harnessing this power for various types of scientific computation, including genetic programming. In previous work, we have shown that using the graphics processor provides dramatic speed improvements over a standard CPU in the context of fitness evaluation. In this work, we use Cartesian Genetic Programming to generate shader programs that implement image filter operations. Using the GPU, we can rapidly apply these programs to each pixel in an image and evaluate the performance of a given filter. We show that we can successfully evolve noise removal filters that produce better image quality than a standard median filter.

Research paper thumbnail of Cartesian Genetic Programming for Image Processing

Genetic and Evolutionary Computation, 2013

Combining domain knowledge about both imaging processing and machine learning techniques can expa... more Combining domain knowledge about both imaging processing and machine learning techniques can expand the abilities of Genetic Programming when used for image processing. We successfully demonstrate our new approach on several different problem domains. We show that the approach is fast, scalable and robust. In addition, by virtue of using off-the-shelf image processing libraries we can generate human readable programs that incorporate sophisticated domain knowledge.

Research paper thumbnail of Cartesian Genetic Programming on the GPU

Natural Computing Series, 2013

Cartesian Genetic Programming is a form of Genetic Programming based on evolving graph structures... more Cartesian Genetic Programming is a form of Genetic Programming based on evolving graph structures. It has a fixed genotype length and a genotype-phenotype mapping that introduces neutrality into the representation. It has been used for many applications and was one of the first Genetic Programming techniques to be implemented on the GPU. In this chapter, we describe the representation in detail and discuss various GPU implementations of it. Later in the chapter, we discuss a recent implementation based on the GPU.net framework.

Research paper thumbnail of A Survey of Self Modifying Cartesian Genetic Programming

Genetic Programming Theory and Practice VIII, 2010

Self-Modifying Cartesian Genetic Programming (SMCGP) is a general purpose, graph-based, developme... more Self-Modifying Cartesian Genetic Programming (SMCGP) is a general purpose, graph-based, developmental form of Cartesian Genetic Programming. In addition to the usual computational functions found in CGP, SMCGP includes functions that can modify the evolved program at run time. This means that programs can be iterated to produce an infinite sequence of phenotypes from a single evolved genotype. Here, we discuss the results of using SMCGP on a variety of different problems, and see that SMCGP is able to solve tasks that require scalability and plasticity. We demonstrate how SMCGP is able to produce results that would be impossible for conventional, static Genetic Programming techniques.

Research paper thumbnail of Genetic programming on GPUs for image processing

International Journal of High Performance Systems Architecture, 2008

The evolution of image filters using Genetic Programming is a relatively unexplored task. This is... more The evolution of image filters using Genetic Programming is a relatively unexplored task. This is most likely due to the high computational cost of evaluating the evolved programs. We use the parallel processors available on modern graphics cards to greatly increase the speed of evaluation. Previous papers in this area dealt with noise reduction and edge detection. Here we demonstrate that other more complicated processes can also be successfully evolved, and that we can "reverse engineer" the output from filters used in common graphics manipulation programs.

Research paper thumbnail of Developments in Cartesian Genetic Programming: self-modifying CGP

Genetic Programming and Evolvable Machines, 2010

Self-modifying Cartesian Genetic Programming (SMCGP) is a general purpose, graph-based, developme... more Self-modifying Cartesian Genetic Programming (SMCGP) is a general purpose, graph-based, developmental form of Genetic Programming founded on Cartesian Genetic Programming. In addition to the usual computational functions, it includes functions that can modify the program encoded in the genotype. This means that programs can be iterated to produce an infinite sequence of programs (phenotypes) from a single evolved genotype. It also allows programs to acquire more inputs and produce more outputs during this iteration. We discuss how SMCGP can be used and the results obtained in several different problem domains, including digital circuits, generation of patterns and sequences, and mathematical problems. We find that SMCGP can efficiently solve all the problems studied. In addition, we prove mathematically that evolved programs can provide general solutions to a number of problems: n-input even-parity, n-input adder, and sequence approximation to p.

Research paper thumbnail of Evolution-in-materio: evolving computation in materials

Evolutionary Intelligence, 2014

Evolution-in-materio (EIM) is the manipulation of a physical system by computer controlled evolut... more Evolution-in-materio (EIM) is the manipulation of a physical system by computer controlled evolution (CCE). It takes the position that to obtain useful functions from a physical system one needs to apply highly specific physical signals and place the system in a particular physical state. It argues that CCE is an effective methodology for doing this. One of the potential advantages of this is that artificial evolution can potentially exploit physical effects that are either too complex to understand or hitherto unknown. EIM is most commonly used as a methodology for implementing computation in physical systems. The method is a hybrid of analogue and classical computation in that it uses classical computers to program physical systems or analogue devices. Thus far EIM has only been attempted in a rather limited set of physical and chemical systems. This review paper examines past work related to EIM and discusses historical underpinnings behind such work. It describes latest developments, gives an analysis of the advantages and disadvantages of such work and the challenges that still remain.

Research paper thumbnail of SMCGP2

Proceedings of the 13th annual conference companion on Genetic and evolutionary computation

Self Modifying Cartesian Genetic Programming 2 (SMCGP2) is a general purpose, graph-based, develo... more Self Modifying Cartesian Genetic Programming 2 (SMCGP2) is a general purpose, graph-based, developmental form of Cartesian Genetic Programming. Using a combination of computational functions and special functions that can modify the phenotype at runtime, it has been employed to find general solutions to a number of computational problems. Here, we apply the new SMCGP technique to find mathematical relationships between well known mathematical constants (i.e. pi, e, phi, omega etc) using a variety of functions sets. Some of formulae obtained are distinctly unusual and may be unknown in mathematics.

Research paper thumbnail of Evolution in Materio

Research paper thumbnail of Evolution In Materio: Investigating the Stability of Robot Controllers Evolved in Liquid Crystal

Evolvable Systems: From Biology to Hardware, 2005

In our previous work, we have demonstrated that evolution can be used to program liquid crystal t... more In our previous work, we have demonstrated that evolution can be used to program liquid crystal to act as a signal processing device. In this work we discuss the stability and reconfigurability of a real time robot controller evolved in liquid crystal. We envisage these issues will be important when programming or evolving in other physical systems.

Research paper thumbnail of A scalable platform for intrinsic hardware and in materio evolution

NASA/DoD Conference on Evolvable Hardware, 2003. Proceedings.

An evolvable motherboard is an intrinsic evolution platform that allows the detailed probing of i... more An evolvable motherboard is an intrinsic evolution platform that allows the detailed probing of internal signals of circuits that have been evolved. Several designs for an evolvable motherboard have already been demonstrated to work sucessfully as a platform for the evolution of electronic circuits. This paper proposes a new platform that is suitable for intrinsic evolution using a wider variety of media. The platform presents a more modular design, making it suitable for use in evolving more complex physcial primitives whilst affording the possiblity of performing evolution in parallel for simpler problems. The construction of the device is discussed and examples of potential experiments in silicon, liquid crystal and other media are described.

Research paper thumbnail of SMCGP2

Proceedings of the 13th annual conference on Genetic and evolutionary computation, 2011

Self Modifying Cartesian Genetic Programming is a general purpose, graph-based, developmental for... more Self Modifying Cartesian Genetic Programming is a general purpose, graph-based, developmental form of Cartesian Genetic Programming. Using a combination of computational functions and special functions that can modify the phenotype at runtime, it has been employed to find general solutions to certain Boolean circuits and mathematical problems. In the present work, a new version, of SMCGP is proposed and demonstrated. Compared to the original SMCGP both the representation and the function set have been simplified. However, the new representation is also two-dimensional and it allows evolution and development to have more ways to solve a given problem. Under most situations we show that the new method makes the evolution of solutions to even parity and binary addition faster than with previous version of SMCGP.

Research paper thumbnail of Evolution-In-Materio: Solving Machine Learning Classification Problems Using Materials

Lecture Notes in Computer Science, 2014

Evolution-in-materio (EIM) is a method that uses artificial evolution to exploit the properties o... more Evolution-in-materio (EIM) is a method that uses artificial evolution to exploit the properties of physical matter to solve computational problems without requiring a detailed understanding of such properties. EIM has so far been applied to very few computational problems. We show that using a purpose-built hardware platform called Mecobo, it is possible to evolve voltages and signals applied to physical materials to solve machine learning classification problems. This is the first time that EIM has been applied to such problems. We evaluate the approach on two standard datasets: Lenses and Iris. Comparing our technique with a well-known software-based evolutionary method indicates that EIM performs reasonably well. We suggest that EIM offers a promising new direction for evolutionary computation.

Research paper thumbnail of Evolution-in-materio: Solving bin packing problems using materials

2014 IEEE International Conference on Evolvable Systems, 2014

Evolution-in-materio (EIM) is a form of intrinsic evolution in which evolutionary algorithms are ... more Evolution-in-materio (EIM) is a form of intrinsic evolution in which evolutionary algorithms are allowed to manipulate physical variables that are applied to materials. This method aims to configure materials so that they solve computational problems without requiring a detailed understanding of the properties of the materials. The concept gained attention through the work of Adrian Thompson who in 1996 showed that evolution could be used to design circuits in FPGAS that exploited the physical properties of the underlying silicon [21]. In this paper, we show that using a purpose-built hardware platform called Mecobo, we can solve computational problems by evolving voltages, signals and the way they are applied to a microelectrode array with a chamber containing single-walled carbon nanotubes and a polymer. Here we demonstrate for the first time that this methodology can be applied to the well-known computational problem of bin packing. Results on benchmark problems show that the technique can obtain results reasonably close to the known global optima. This suggests that EIM is a promising method for configuring materials to carry out useful computation.

Research paper thumbnail of Evolution-in-materio: A frequency classifier using materials

2014 IEEE International Conference on Evolvable Systems, 2014

Evolution-in-materio (EIM) is a method that uses artificial evolution to exploit properties of ma... more Evolution-in-materio (EIM) is a method that uses artificial evolution to exploit properties of materials to solve computational problems without requiring a detailed understanding of such properties. In this paper, we describe experiments using a purpose-built EIM platform called Mecobo to classify whether an applied square wave signal is above or below a userdefined threshold. This is the first demonstration that electrical configurations of materials (carbon nanotubes and a polymer) can be evolved to act as frequency classifiers.

Research paper thumbnail of Evolution-in-materio: Solving function optimization problems using materials

2014 14th UK Workshop on Computational Intelligence (UKCI), 2014

Evolution-in-materio (EIM) is a method that uses artificial evolution to exploit properties of ma... more Evolution-in-materio (EIM) is a method that uses artificial evolution to exploit properties of materials to solve computational problems without requiring a detailed understanding of such properties. In this paper, we show that using a purpose-built hardware platform called Mecobo, it is possible to evolve voltages and signals applied to physical materials to solve computational problems. We demonstrate for the first time that this methodology can be applied to function optimization. We evaluate the approach on 23 function optimization benchmarks and in some cases results come very close to the global optimum or even surpass those provided by a well-known software-based evolutionary approach. This indicates that EIM has promise and further investigations would be fruitful.

Research paper thumbnail of Mecobo: A Hardware and Software Platform for In Materio Evolution

Lecture Notes in Computer Science, 2014

Evolution in Materio (EIM) exploits properties of physical systems to compute. "Designs" are evol... more Evolution in Materio (EIM) exploits properties of physical systems to compute. "Designs" are evolved instead of a traditional top down design approach. Computation is a product of the state(s) of the material and input data. Evolution manipulates physical processes by stimulating materials assessed in situ. A hardware software platform designed for EIM experimentation is presented. The platform with features especially for EIM is described together with demonstration experiments using carbon nanotubes in a thick film placed on micro electrode arrays.

Research paper thumbnail of Optimizing Shape Design with Distributed Parallel Genetic Programming on GPUs

Studies in Computational Intelligence, 2012

Optimized shape design is used for such applications as wing design in aircraft, hull design in s... more Optimized shape design is used for such applications as wing design in aircraft, hull design in ships, and more generally rotor optimization in turbomachinery such as that of aircraft, ships, and wind turbines. We present work on optimized shape design using a technique from the area of Genetic Programming, self-modifying Cartesian Genetic Programming (SMCGP), to evolve shapes with specific criteria, such as minimized drag or maximized lift. This technique is well suited for a distributed parallel system to increase efficiency. Fitness evaluation of the genetic programming technique is accomplished through a custom implementation of a fluid dynamics solver running on graphics processing units (GPUs). Solving fluid dynamics systems is a computationally expensive task and requires optimization in order for the evolution to complete in a practical period of time. In this chapter, we shall describe both the SMCGP technique and the GPU fluid dynamics solver that together provide a robust and efficient shape design system.

Research paper thumbnail of Humanoid learns to detect its own hands

2013 IEEE Congress on Evolutionary Computation, 2013

Robust object manipulation is still a hard problem in robotics, even more so in high degree-of-fr... more Robust object manipulation is still a hard problem in robotics, even more so in high degree-of-freedom (DOF) humanoid robots. To improve performance a closer integration of visual and motor systems is needed. We herein present a novel method for a robot to learn robust detection of its own hands and fingers enabling sensorimotor coordination. It does so solely using its own camera images and does not require any external systems or markers. Our system based on Cartesian Genetic Programming (CGP) allows to evolve programs to perform this image segmentation task in real-time on the real hardware. We show results for a Nao and an iCub humanoid each detecting its own hands and fingers.

Research paper thumbnail of GECCO 2011 tutorial

Proceedings of the 13th annual conference companion on Genetic and evolutionary computation, 2011

Cartesian Genetic Programming (CGP) is an increasingly popular and efficient form of Genetic Prog... more Cartesian Genetic Programming (CGP) is an increasingly popular and efficient form of Genetic Programming that was developed by Julian Miller in 1999 and 2000. In its classic form, it uses a very simple integer based genetic representation of a program in the form of a directed graph. Graphs are very useful program representations and can be applied to many domains (e.g. electronic circuits, neural networks). In a number of studies, CGP has been shown to be comparatively efficient to other GP techniques. It is also very simple to program. Since then, the classical form of CGP has been developed made more efficient in various ways. Notably by including automatically defined functions (modular CGP) and self-modification operators(self-modifying CGP). SMCGP was developed by Julian Miller, Simon Harding and Wolfgang Banzhaf. It uses functions that cause the evolved programs to change themselves as a function of time. Using this technique it is possible to find general solutions to classes of problems and mathematical algorithms (e.g. arbitrary parity, n-bit binary addition, sequences that provably compute pi and e to arbitrary precision, and so on). The tutorial will cover the basic technique, advanced developments and applications to a variety of problem domains.

Research paper thumbnail of Evolution of image filters on graphics processor units using Cartesian Genetic Programming

2008 IEEE Congress on Evolutionary Computation (IEEE World Congress on Computational Intelligence), 2008

Graphics processor units are fast, inexpensive parallel computing devices. Recently there has bee... more Graphics processor units are fast, inexpensive parallel computing devices. Recently there has been great interest in harnessing this power for various types of scientific computation, including genetic programming. In previous work, we have shown that using the graphics processor provides dramatic speed improvements over a standard CPU in the context of fitness evaluation. In this work, we use Cartesian Genetic Programming to generate shader programs that implement image filter operations. Using the GPU, we can rapidly apply these programs to each pixel in an image and evaluate the performance of a given filter. We show that we can successfully evolve noise removal filters that produce better image quality than a standard median filter.

Research paper thumbnail of Cartesian Genetic Programming for Image Processing

Genetic and Evolutionary Computation, 2013

Combining domain knowledge about both imaging processing and machine learning techniques can expa... more Combining domain knowledge about both imaging processing and machine learning techniques can expand the abilities of Genetic Programming when used for image processing. We successfully demonstrate our new approach on several different problem domains. We show that the approach is fast, scalable and robust. In addition, by virtue of using off-the-shelf image processing libraries we can generate human readable programs that incorporate sophisticated domain knowledge.

Research paper thumbnail of Cartesian Genetic Programming on the GPU

Natural Computing Series, 2013

Cartesian Genetic Programming is a form of Genetic Programming based on evolving graph structures... more Cartesian Genetic Programming is a form of Genetic Programming based on evolving graph structures. It has a fixed genotype length and a genotype-phenotype mapping that introduces neutrality into the representation. It has been used for many applications and was one of the first Genetic Programming techniques to be implemented on the GPU. In this chapter, we describe the representation in detail and discuss various GPU implementations of it. Later in the chapter, we discuss a recent implementation based on the GPU.net framework.

Research paper thumbnail of A Survey of Self Modifying Cartesian Genetic Programming

Genetic Programming Theory and Practice VIII, 2010

Self-Modifying Cartesian Genetic Programming (SMCGP) is a general purpose, graph-based, developme... more Self-Modifying Cartesian Genetic Programming (SMCGP) is a general purpose, graph-based, developmental form of Cartesian Genetic Programming. In addition to the usual computational functions found in CGP, SMCGP includes functions that can modify the evolved program at run time. This means that programs can be iterated to produce an infinite sequence of phenotypes from a single evolved genotype. Here, we discuss the results of using SMCGP on a variety of different problems, and see that SMCGP is able to solve tasks that require scalability and plasticity. We demonstrate how SMCGP is able to produce results that would be impossible for conventional, static Genetic Programming techniques.

Research paper thumbnail of Genetic programming on GPUs for image processing

International Journal of High Performance Systems Architecture, 2008

The evolution of image filters using Genetic Programming is a relatively unexplored task. This is... more The evolution of image filters using Genetic Programming is a relatively unexplored task. This is most likely due to the high computational cost of evaluating the evolved programs. We use the parallel processors available on modern graphics cards to greatly increase the speed of evaluation. Previous papers in this area dealt with noise reduction and edge detection. Here we demonstrate that other more complicated processes can also be successfully evolved, and that we can "reverse engineer" the output from filters used in common graphics manipulation programs.

Research paper thumbnail of Developments in Cartesian Genetic Programming: self-modifying CGP

Genetic Programming and Evolvable Machines, 2010

Self-modifying Cartesian Genetic Programming (SMCGP) is a general purpose, graph-based, developme... more Self-modifying Cartesian Genetic Programming (SMCGP) is a general purpose, graph-based, developmental form of Genetic Programming founded on Cartesian Genetic Programming. In addition to the usual computational functions, it includes functions that can modify the program encoded in the genotype. This means that programs can be iterated to produce an infinite sequence of programs (phenotypes) from a single evolved genotype. It also allows programs to acquire more inputs and produce more outputs during this iteration. We discuss how SMCGP can be used and the results obtained in several different problem domains, including digital circuits, generation of patterns and sequences, and mathematical problems. We find that SMCGP can efficiently solve all the problems studied. In addition, we prove mathematically that evolved programs can provide general solutions to a number of problems: n-input even-parity, n-input adder, and sequence approximation to p.

Research paper thumbnail of Evolution-in-materio: evolving computation in materials

Evolutionary Intelligence, 2014

Evolution-in-materio (EIM) is the manipulation of a physical system by computer controlled evolut... more Evolution-in-materio (EIM) is the manipulation of a physical system by computer controlled evolution (CCE). It takes the position that to obtain useful functions from a physical system one needs to apply highly specific physical signals and place the system in a particular physical state. It argues that CCE is an effective methodology for doing this. One of the potential advantages of this is that artificial evolution can potentially exploit physical effects that are either too complex to understand or hitherto unknown. EIM is most commonly used as a methodology for implementing computation in physical systems. The method is a hybrid of analogue and classical computation in that it uses classical computers to program physical systems or analogue devices. Thus far EIM has only been attempted in a rather limited set of physical and chemical systems. This review paper examines past work related to EIM and discusses historical underpinnings behind such work. It describes latest developments, gives an analysis of the advantages and disadvantages of such work and the challenges that still remain.