An exploration of multi-level selection (group selection) by simulation with a genetic algorithm and deep learning in Python.
The goal of this repository is to better understand this weird concept known as "group selection" by programming an evolutionary simulation with groups that are in competition with each other and the members of each group can choose to cooperate with their groupmates or not. Hopefully, altruism will emerge, but I am also unsure of the fundamental parts of biology that I misunderstand. So that's another goal: to learn what I don't know about biology by blindly simulating a small piece of it.
Find more technical details in issue #1
- Sapiens by Yuval Noah Harari - particularly chapter 2
- The Righteous Mind by Jonathan Haidt - particularly chapter 9 and this lecture
- Up and Down the Ladder of Abstraction by Bret Victor
- Lecture #22 Emergence and Complexity by Professor Robert Sapolsky
- Pymunk - physics engine
- Pyglet - game/visualization library
- Numpy - multi-dimentional math library
- Keras - deep learning library
Make a Python virtual environment
python3 -m venv venv
Run the virtual environment
source venv/bin/activate
Install all of the requirements
pip install -r requirements.txt
Enter the matrix
python3 sim.py