Evolutionary Computation CS472/572

"We will now discuss, in little more detail, the struggle for existence."
--Charles Darwin, "The Origin of Species"

Evolutionary Computation is the adaptation of the processes involved in the evolution of biological organisms to problems of computation. In much the same way as farmers have, over thousands of years, evolved better cows, you too can evolve better solutions to your problems by better breeding of problem solutions {\it in silico} (in a computer).

In the practical: Evolutionary Computation has been used as an optimization method for very hard or awkward problems that often have difficult search spaces. For example, it has been used to design better turbine fan blades for Boeing, improve production of paper and reduce pollution of papermills and create better anntennas for NASA.

In the theoretical: it has been used to explore the power and the limits of the processes involved in evolution.

Class Goals

  1. To learn the basics of evolution as an black box optimization strategy for a wide variety of problems.

  2. To learn by experience several evolutionary computation techniques including GA, GP, ES, and others.

  3. To understand in more detail the effects representation, fitness, selective pressure, population structure, etc.

  4. To explore various techniques from nature such as preditor/prey.

  5. Taken as a graduate course: to produce a publication quality paper on a project of your choosing.

  6. Learn the strengths and weaknesses of evolution as a computational technique.

  7. Have fun evolving cool stuff.