Term Project: Evolutionary Algorithms

In this project, you will develop an integrated system in Racket that simulates the evolution of a population of individuals. Initially, we will use a very simple problem but perhaps by the final project deliverable we will have demonstrated the power of evolutionary algorithms to learn or discover solutions to complex problems.

In order to understand evolutionary or genetic algorithms, you must grasp several key concepts. First, we have the notion of an individual. An individual is made up of some genetic material that distinguishes the individual from other individuals having different genetic material. Like identical twins, two individuals may have the same genetic material but we can still distinguish one from the other. And like genetics in the biological world, an individual's genetic make will determine how the individual behaves in its environment.

Given an individual, we can consider how fit that individual is for its environment. Highly fit individuals will tend to survive and reproduce; less fit individuals will tend to die. Thus, for a particular problem domain, which we will think of as our environment, we will define a fitness function that measures how well an individual is performing on our problem.

Finally, we will simulate a population of individuals. When we add mutation and reproduction, we have all the ingredients for an evolving population that gradually performs better and better -- becomes more fit -- with respect to the problem domain. The genetic make-up of a population can change in two ways. First, an individual's genetic code may suffer a mutation. Some mutations are detrimental but others may be advantageous. However, mutations are relatively rare. Certain individuals in our population will be selected to breed with other selected individuals, thereby creating new individuals with genetic material from both parents. As you may anticipate, we will tend to select highly fit individuals for reproduction. In this way, the entire population evolves toward an equilibrium; we hope that this equilibrium will provide a satisfactory solution in our problem domain.