Hardware evolution is the use of genetic algorithms to design electronic circuits. The term Evolvable Hardware (EHW) has been used to describe the system in which hardware evolution takes place.

There are two main components to EHW. The first is some form of reconfigurable hardware commonly an FPGA but it can also be a software simulation of a device, on which the circuit that has been evolved is tested. The second component is the genetic algorithm which performs the evolution. This can further be split down into two sub-components, some form of genetic operations (mutation, crossover etc...) and a fitness function. The genetic operations are fairly straightforward and tend to mimic real life, child genomes (a genome being a representation of a circuit) are created from the genetic material of their parents. The fitness function is used to determine how good the genome is at fufilling the task it is set. In the wild the fitness function would be how good is this animal at surviving. Think survival of the fittest, where the fitness function determines how fit a genome is. The fitter the genome the greater the number of children it has.

Firstly a random population of genomes is created. Then taking each genome in turn it is used to configure the reconfigurable hardware into an actual circuit. Inputs are then fed into the circuit and the outputs are recorded. The fitness function then compares the outputs to the expected result given the inputs and assigns a fitness score. An example fitness function could assign a score based on how well the circuit copies its inputs to its outputs. The next genome in the population is then tested in the same manner and so on until all the genomes have been assigned a fitness score. It is then that a new population is created from the old one using the genetic operations. The fitter the genome the greater the chance that its genetic material will survive to the next generation. The new population is then tested in the same ways as the old one.

Eventually, given enough time and resources, this will produce a circuit that fufils the fitness function perfectly (or at least pretty well). Therefore all you need to do to evolve a circuit to do any particular task is to write a fitness function that selects for that kind of behaviour in your circuit and then leave the EHW to run.

Hardware evolution tends to be good at evolving solutions to problems that traditional design techniques find difficult. Things that neural networks tend to be good at. The benefits of using EHW over neural networks is that the final result is implemented in hardware and so is faster. If you want to know more then please look at Adrian Thompson's website at http://www.cogs.susx.ac.uk/users/adrianth/.

Log in or register to write something here or to contact authors.