Artificial Life, CS 417
At
their simplest, genetic algorithms (GA) are special techniques for solving
min-max or optimization problems.
Applied to a function, GA will give the same result as finding the zeros
of a derivative – so at one level, GA are just a numerical technique for
solving a calculus problem!
However, the real power of GA lies in its methodology that resembles the
biological process of evolution, complete with chromosomes, genes, mutation,
etc.
Following this analogy, we will be constructing/creating artificial life
forms that evolve to solve a problem posed by their environment.
In many cases we will specify the problem that the artificial life should
solve, but in a few cases we will “turn the creatures loose” and let them
evolve to do whatever they please.
It is in this latter case that we really begin to challenge our concept
of life, and we will be forced to address philosophical questions about the
nature of life and death.
What does it mean to be alive? Does life have to resemble the
human/biological model?
At a practical level, we
will learn how to use artificial life (a-life) to solve simple problems like
calculating the digits of p. The
power of genetic algorithms is staggering, though not all-powerful, and we will
explore GA limitations. We will
also explore using genetic algorithms as a technique for automatically writing
programs (called evolutionary programming).
To solve more complex problems we will endow our creatures with simple
neural net brains whose structure evolve with time.
Finally, we will create an entire artificial world with creatures that can evolve
and compete for limited resources.
Class Notes Part 2 (Java Review)
Class Notes Part 3 (How GA work)
Class Notes Part 6 (Schema Theorem)
Class Notes Part 7 (Binary vs. N-ary vs. Float)
Class Notes Part 8 (GA Modifications)
Class Notes Part 9 (Evolutionary Programming)
Class Notes Part 10 (Evolving Turing Machines)
Class Notes Part 11 (Real Critters At Last! Neural Nets)
Class Notes Part 12 (Ecosystem Simulations)