For each module, I will provide written and video tutorials on the topics. You can review whichever format suits you best. If the amount feels overwhelming, please reach out and we can help you narrow things down, and select a subset of the material to focus an exercise around. It's a lot!
- 📗 Nature of Code Chapter 9: Genetic Algorithms (JS version of chapter not yet ready)
- 📕 Section 11.3 from Kate Compton’s Doctoral Thesis “Casual Creators” (p. 262 - 267) (2019)
- 🎥 Karl Sims Evolved Virtual Creatures - 4 min
- 🚂 9.1 Introduction to Genetic Algorithms - 12 min
- 🚂 9.2 Genetic Algorithms How it Works - 23 min
- 🚂 9.3 Shakespeare Monkey GA - 8 min
- 🚂 9.4 Looking at the Code GA - 23 min
- 🎥 Simulation Natural Selection from Primer - 10 min
- 💻 Genetic algorithm: Evolving Shakespeare
- 💻 Genetic algorithm: Evolving Shakespeare - Simplified
- 💻 Full Collection of Chapter 9 examples
For each module, I will provide a list of additional video tutorials and readings that you may draw on for further exploration. It's unlikely you would be able to consume everything in one week and if you are looking for guidance about what might fit with your interests and learning style the most, please reach out.
- 🚂 9.5 Genotype vs. Phenotype - 14 min
- 🚂 9.9 Interactive Selection - 8 min
- 🚂 9.10 Continuous Evolutionary System - 8 min
- 🚂 Smart Rockets Coding Challenge
- 🚂 Traveling Salesperson GA Coding Challenge
- 🚂 Evolutionary Steering Behaviors Coding Challenge
- 🚂 9.6 Improved Fitness - 5 min
- 🚂 9.7 Improved Pool Selection 1 - 16 min
- 🚂 9.8 Improved Pool Selection 2 - 18 min
- 📕 Galanter, Philip. "The Problem with Evolutionary Art Is…" Paper presented at EvoCOMNET’10: The 7th European Event on the Application of Nature-inspired Techniques for Telecommunication Networks and other Parallel and Distributed Systems, April 7-9, 2010.
- 📕 Sims, Karl. "Artificial Evolution for Computer Graphics." Paper presented at SIGGRAPH '91: The 18th Annual Conference on Computer Graphics and Interactive Techniques, Las Vegas, NV, July 28-August 2, 1991.
- 📕 Sims, Karl. "Evolving Virtual Creatures." Paper presented at SIGGRAPH '94: The 21st Annual Conference on Computer Graphics and Interactive Techniques, Orlando, FL, July 24-29, 1994.
The purpose of the assignment this week is to explore the idea of genetic algorithms and have a discussion about scenarios and possibilities at the start of class next week. You could choose one of the following three options (or design your own assignment!)
Describe a problem and approach to "solving" it with a Genetic Algorithm. Here is a template you can use. Document your idea in a blog post and link below.
Play with the parameters of any of the code examples provided above. Try changing any of following:
- Population Size
- Mutation Rate
- Fitness Function
- Crossover method
- Mutation method
How do each of the above parameters alter the behavior / outcome of the example? Document your results.
Create your own simulation with a genetic algorithm. This is probably too ambitious for a one week assignment, but it could be a step along the way to a final project. Here are some ideas:
- Using the Shakespeare monkey example, try evolving a sequence of something other than characters -- geometry, musical notes, pixels, etc.
- Using the "evolving faces" example, create your own "interactive selection" project. In addition to visual design, consider evolving sound — a short sequence of tones?
- In Jer Thorp’s original Smart Rockets each rocket only gets five thrusters (of any direction and strength) that follow a firing sequence (of arbitrary length). Jer’s simulation also gives the rockets a finite amount of fuel. Try adding these elements or other variations to my Smart Rockets example, Smart Rockets video tutorial.
The following emoji key will hopefully help you navigate the material for each module.
- 🚂 Video tutorial from Coding Train
- 🎥 Other video tutorial
- 📗 Nature of Code book
- 📕 Other reading
- 💻 Code examples
- 🎨 Creative project references