Computer Science 499 / 001



Tuesday, 4:30-7:10 PM, in Room 253 of Krug Hall.


Sean Luke.



What in the world is a Metaheuristic?

Let's say you have a problem and you don't know the answer: you don't even know how to go about finding the answer: but you do know a good answer when you see it. For example, imagine if you were trying to find a good simulated robot soccer player. You have a procedure for building arbitrary players; and you have a simulator in which to test them and give them a grade (maybe by playing them against each other). But you don't have any idea how to build good players. You can provide these tools to a metaheuristic algorithm to search for a solution automatically! For example, you could use a genetic algorithm to “breed” solutions inside the computer for you. Or have a particle swarm optimization algorithm deploy virtual swarms to hunt for the solution.

Experiments in metaheuristics can be expensive, especially if your test procedure (such as the robot simulator above) is slow. The department has a small supercomputer cluster (about 60 multi-core nodes), and the instructor expects that students will be given special access to this cluster to do experiments. Projects will be typically be in Java, and other languages if so negotiated.

Feel free to contact the instructor with any questions you have about this course.

About the Class

This course will cover techniques and algorithms in metaheuristics. Techniques may include, among others, evolutionary computation, particle swarm optimization, ant colony optimization, estimation of distribution algorithms, coevolution, simulated annealing, tabu search, and hill-climbing. Topics may include: multiagent metaheuristics, exploration and exploitation, bloat, quality assessment, stochastic optimization with constraints, distributed techniques (island models, distributed evaluation), and multiobjective optimization.

Course Web Page


There are no textbooks. We'll be using various papers and lecture notes.


This course will consist largely of several large projects and two exams. The breakdown will be approximately: 1. Homework and (several) Projects: 50% with higher weight given to harder projects. 2.Exams (2 of them): 25% Each

Course Outcomes

1. An ability to employ a variety metaheuristic algorithms. 2. An ability to identify problems and determine what kinds of search and optimization techniques are appropriate for them (or if any are), and what issues are involved in the design and parameter-turning of such metaheuristics. 3. An ability to implement such algorithms to real problems on distributed computational environments.