Introduction | Assumptions | Design | Implementation | Results
Our experiment will consist of a computer program simulating a (very) simple ecosystem consisting of 1,000 different individuals, where an individual is defined as per our assumptions.
On a whim we will decide that an individual’s DNA consists of 16 characters, each of which can be one of 4 characters (giving a potential search space of 4,294,967,296 different genetic possibilities).
We will judge evolutionary fitness by counting how many times an individual’s DNA has the same character in the same position as the perfectly adapted individual.
Each turn, a certain number of individuals (which will vary between experiments) will be chosen based on their fitness to participate in a round of breeding in order to create the next generation of individuals.
Breeding will be simulated by choosing individuals at random from the breeding pool and forming a child from them. For each character position in the child’s DNA, one or other of the parents’ DNA characters in the same position is chosen – unless a mutation occurs.
Mutations will occur at a specified rate (which will vary between experiments). When a mutation occurs, a random character is inserted. We will not check that this character is different to those present in the parents – some mutations are “corrected”.
This process of selection and breeding will continue until a certain percentage of the individuals alive have achieved a total match with the perfectly adapted individual, or until 1,000 generations have been simulated (whichever is smaller).
We will run each experiment 10,000 times and calculate the number of times each experimental batch was successful (i.e. total match was achieved) and how many generations this took on average.
We will vary the size of breeding pool and the likelihood of mutation between experimental runs in order to tabulate comparative figures that can be used to produce graphs allowing conclusions in support of (or against) our hypothesis to be drawn.