Skip to content

Exploring the application of a Genetic Algorithm to evolve harmonographs

Notifications You must be signed in to change notification settings

tiagofmartins/evolving-harmonographs

Repository files navigation

Evolving harmonographs

This tutorial covers the implementation and application of a Genetic Algorithm on a generative design process. The goal is to evolve computer-generated drawings. In particular, we will be evolving harmonographs. To be precise, we will evolve a set of parameters that control the algorithmic drawing of harmonographs.

Population of harmonographs evolved to resemble the letter A

Modules

The tutorial is structured as a series of modules:

  1. Hello harmonograph
  2. Random harmonographs
  3. Individual harmonograph
  4. Population of harmonographs
  5. Recombination of harmonographs
  6. Mutation of harmonographs
  7. Evaluation of harmonographs
  8. Tournament of harmonographs
  9. Elite harmonographs
  10. Automatic evolution of harmonographs
  11. Interactive evolution of harmonographs
  12. External evaluation

Each module consists of a Processing sketch that implements and demonstrates a particular evolutionary concept or mechanism. The modules are linked and sequenced to pave the way for the development of an evolutionary design system at the end.

Prerequisites

  • Intermediate knowledge of Processing (including the ability to work with arrays and classes)

References

  • Lewis, M. (2008). Evolutionary Visual Art and Design. In J. Romero & P. Machado (Eds.), The Art of Artificial Evolution: A Handbook on Evolutionary Art and Music (pp. 3–37). Springer Berlin Heidelberg. [link]
  • Machado, P., Romero, J., & Manaris, B. (2008). Experiments in Computational Aesthetics. In J. Romero & P. Machado (Eds.), The Art of Artificial Evolution: A Handbook on Evolutionary Art and Music (pp. 381–415). Springer Berlin Heidelberg. [link]
  • Martins, T. (2021). Automated Evolution for Design. University of Coimbra, Portugal. [link]
  • Shiffman, D. (2012). The Evolution of Code. In The Nature of Code (pp. 390–443). [link]