Fall 2005 EE599-001 Evolutionary Computing
Fall 2005 EE699-001 Advanced Evolutionary Computing

Time & Place: MWF 11:00-11:50 PM; now meeting in FPAT 577
Instructor: Professor Hank Dietz
Instructor URL: http://aggregate.org/hankd/
Course URL: http://aggregate.org/hankd/EC/
ABET-style Syllabus: Combined Undergraduate (EE599) and Graduate (EE699)

Evolutionary Computing (EC) is about the use of computer simulation of evolutionary processes to solve engineering problems. This course will give students an understanding of, and experience with, evolutionary computing including both Genetic search Algorithms (GAs) and Genetic Programming (GP). The focus will be on solving complex engineering design problems using these techniques. Most undergraduate (EE599) student assignments will specify problems and approaches, whereas graduate (EE699) students will be expected to work on problem(s) that they will propose. C programming will be required to implement the design tools.

What Is Evolutionary Computing?

Fundamentally, evolutionary computing is simulation of the multi-generational natural selection process using artificial (computational) means. In engineering, many problems are too complex to be solved by closed-form equations or application of reasonably straightforward design principles. However, it is often relatively easy to evaluate how good a potential solution (design) is. Evolutionary computing provides a framework for converting the ability to evaluate the quality of a potential solution into a design tool that can automatically create good solutions. It does this by an evolutionary process like:

  1. Create an initial population of designs
    (either "random" or using approximate design techniques)
  2. Evaluate the quality of all designs in the population,
    reporting the best design and stopping if it is good enough
  3. Discard designs that are relatively poor (unfit)
  4. Create new population members by building:
  5. Go to step 2.

As engineering problems become more about optimizing system performance, rather than optimizing individual components, evolutionary computing has become an increasingly valuable way to perform engineering design. Examples include:

In fact, we have been using EC techniques extensively in our computer engineering research since the early 1990s. For example, we used evolutionary computing to design the networks used in both the KLAT2 and KASY0 cluster supercomputers. As system complexity continues to grow, we believe that EC is a technology that should be part of every engineer's design toolkit.

Course Materials

Course Staff

Professor Hank Dietz is pretty easy to find; see Hank's online calendar. He has an "open-door" policy that whenever his door is open and he's not busy with someone else, he's available.


http://aggregate.org/EC/ (Advanced) Evolutionary Computing