“Simulated Selection: genetic algorithms for creating artworks,” is a project designed to use processes found in biological evolution (natural selection, genetic drift, heritability, speciation, mutation, etc.) as methods by which to create artworks. All physical products (i.e. artworks) fall into the following two categories: (a) outcomes of undirected evolution from the initial population; (b) documentation of evolutionary and artistic processes.
A variation of the following genetic algorithm (GA) is used to simulate evolution:
1. randomly initialize population(t)
2. determine fitness of population(t)
a. select parents from population(t)
b. perform crossover on parents creating population(t+1)
c. perform mutation of population(t+1)
d. determine fitness of population(t+1)
4. until best individual is good enough
All of these steps have been customized in order to make them more suited to the creation of artworks. It should be noted that in running this simulation, there is no intention to seek candidate solutions to a specific problem (as is typically the case when developing a GA). I instead intend for the algorithm to produce variation and complexity for their own sake. Although physical objects are created, the algorithm and documentation thereof is an integral component of the final body of work. The code is available at https://yesthatguy.github.io/simulated-selection/.
The simulation is intended to run for 50 generations with a population ramping up from 3 individuals (±16%) at generation #1, to 60 individuals (±16%) by generation #44 and thereafter maintaining a population of 60 individuals (±16%). Each individual (genotype) is represented by a series of strings (chromosomes) of 64 integers (codons) that determine all of its parameters (genes). Some examples of these parameters are shape, scale, colour, and texture.
I intend to continue developing the code and algorithm after the completion of this project and hope to use later versions to produce several distinct bodies of work. In principle, there is no limit to the ways in which the strings of code can manifest as artworks.