This project would involve researching how we can best model simple organisms and their evolution through a computer program. This algorithm is modeled off of Darwin’s theory of evolution and thus, reflects the process of natural selection where the fittest individuals are selected for reproduction in order to produce offspring of the next generation. At each step, the algorithm the top, most “fit” individuals to reproduce and pass down their genes (weighted constants). This means that over many generations, the algorithm becomes more optimal similar to the way that organisms become more adapted to their environments, and learn to optimize their fitness score. This type of algorithm provides a lot of solutions to problems that typically are really hard to solve with more traditional computer algorithms.
Through this project, we would
- Identify key features of natural selection and evolution and their digital equivalents
- DNA represented as a set of constants, with mutations occurring in crossing over
- Natural variation in the gene pool (initial population)
- Demonstrate how simple environmental factors can lead to representations of more complex concepts that we do not explicitly code in
- Trophic levels (specialization in consuming different types of food)
- Coevolution
- Genetic drift and effects of population size on genetic diversity
- Observe how changing various factors (abundance of natural occurring food, penalties for movement, etc) affect the fitness of individuals. We can also explicitly state how certain processes happen
- Choosing mates
- The process of mutation
This project would consist of creating a Python program to simulate an environment as well as be capable of simulating all of the above. We would present our findings of how these factors affect some of the concepts we have covered in class as well as the viability of these types of algorithms in AI for the future.