| Summary | In this project, students learn to use genetic algorithms to solve three different sets of problems. They develop techniques for selecting and crossing over populations, and learn how the mixin design pattern can be used to easily evaluate a variety of different crossover, selection, and elitism choices. |
| Topics | Genetic Algorithms, search, constraints |
| Audience | Intro AI |
| Difficulty | Medium. I give students two weeks to complete this. |
| Strengths. | Gives students a chance to easily apply GAs to non-trivial problems and easily experiment with the wide variety of design choices. Encourages them to develop a scientific approach to parameter selection and algorithm evaluation. Illustrates the use of mixins to easily modify an application. |
| Weaknesses | Students must use Python. |
| Dependencies | Students should be familiar with search. I give this assignment about one month into the course. Students must be comfortable with Python and OO programming. |
| Variants | The code is constructed so that it is very easy to add other problems, such as N-queens or map coloring. Interested students can also further explore selection, mutation and crossover operators and perform experiments to evaluate their effectiveness. Depending on the time available and skill sets of the students, instructors might want to focus on a subset of this assignment. |