For evolution to work (either the real-life biological kind or some more abstract kind), we need at least the following.
How it works
(Here is another site where you can learn about genetic algorithms.)
These are problems in which the candidate solutions consist of the settings of multiple parameters. Consider an old-style television with dials labeled with things like "vertical hold" and "contrast". Some combination of settings for these dials results in a good picture, but the viewer is clueless about what combination is the right one. The parameters in this case are the dials, and the search problem is to find the right combination of settings. To apply a GA to a problem like this, we treat each candidate solution as a genome in a population and evaluate each in terms of its fitness, in this case, in terms of the quality of the TV picture that results from the settings.
GAs may be used to study biological evolution itself. An artificial life simulation is set up in which the behavior of creatures depends (at least in part) on their genomes and in which creatures pass on their traits to their offspring. The researcher observes how the fitness of the population varies over different generations and what sorts of solutions the creatures evolve.
Neural networks learn by adjusting their weights on their connections, but where do the connections come from in the first place? That is, what wires up the neural architecture in which neural network learning takes place? In real life, much of this is apparently the job of evolution: some neural structure is innate. One area of research combines GAs with neural networks: the neural network architecture (numbers of units, patterns of connectivity joining them, learning algorithms, etc.) is coded for in the genome, and neural network learning adjusts the weights on the connections in the network.
| Generation | Genomes | Fitness | Fitness proportion |
Individuals selected for mating with crossover points |
|---|---|---|---|---|
| 1 |
01011110 10111000 00001010 00000100 |
3 4 2 1 |
0.3 0.4 0.2 0.1 |
01|011110 10|111000 10111|000 00001|010 |
| 2 |
10011110 01111000 00001000 10111010 |
3 4 1 3 |
0.27 0.36 0.09 0.27 |
01111|000 10111|010 0111|1000 1011|1010 |
| 3 |
10111000 01111010 10111000 01111010 |
4 3 4 3 |
0.29 0.21 0.29 0.21 |
10|111000 01|111010 10111|000 01111|010 |