Evolutionary Algorithms  are powerful general purpose search and optimization techniques. Drawing ideas from evolution theory they generally process a set (‘population’) of trial solutions, exploring the search space from many different points simultaneously. Starting from an initial population of frequently randomly generated solutions (‘individuals’), evolutionary operators for replication and variation are applied to generate a set of ‘children’ from these ‘parents’. A selection scheme then decides which of the individuals must ‘die’ and which will survive to become parents in the next iteration (‘generational cycle’, see figure 1). This process is repeated for many generations and eventually produces high quality solutions when a reasonable balance is achieved between the exploitation of good solution elements that have already been discovered and the exploration of new, promising parts of the search space.