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.