Evolutionary computation is an area of computer science that utilises ideas from biological evolution to solve computational problems. Many of these problems require searching through a huge space of solution possibilities such as among a large number of possible hardware circuit layouts for a configuration that produces the desired behaviour for a set of equations that will predict the ups and downs of a financial market or for a collection of rules that will control a robot as it navigates its environment. These computational problems often require a system to be adaptive - that is to continue to perform well in a constantly changing environment.