After many trials, we found significant results. After initially trying to populate the board with an even distribution of living and dead cells, we realized that scarcity benefited our genetic algorithm by preventing interference between chromosomes. Using trial and error, we found that initial boards with approximately 4% living cells led to the best results. Below are our figures.

 

Above is a graph of the mean value generation by generation of a board that began with 4% living cells and was run for 81 generations. By introducing scarcity, better genes had much more effect on the overall board.

 

Above is a scatter plot of every fitness score of each individual in each generation. Note the upward trend in both clusters of data. This dual clustering is because our fitness function is bimodal. Seeds typically die out early and get low fitness scores, or last all the way to the end of our simulation with high fitness scores due to 3 step or more oscillation. Few boards die off in the middle.

 

Above is the standard deviation graph of the data shown above. The fact that the population does not converge on a single individual is evidence that the problem is unfit for solving with a genetic algorithm. Redefining the problem to promote consistent expression of chromosomes, might allow the genetic algorithm to perform better and ultimately converge.

 

median std dev mean min max Pvalue: <.01%
Random 114.5 3109.07 1028.573 5 16884
Final Gen 16918 6352.524 12818.43 1140 17295

Above is our test for statistical significance. As you can see, we achieved a P value of less than 0.01%, making our result very significant.