A web-based simulation tool that models the evolution of a population under environmental pressure. It demonstrates core biological concepts such as Natural Selection, Mutation, Genetic Drift, and Carrying Capacity using mathematical models.
- Real-time Visualization: Watch the population evolve generation by generation.
- Interactive Controls: Adjust mutation rates, population size, and environmental harshness on the fly.
- Scientific & Math Documentation: Includes dedicated pages explaining the underlying biology and mathematics.
- Dual Charts:
- 📈 Population Size: Logistic growth dynamics.
- 🧬 Average Fitness: Adaptation level of the population.
Each individual is represented by a single continuous trait
- Genotype: A float value.
- Mutation: Modeled as a stochastic process using a Normal Distribution.
Fitness determines an individual's probability of survival and reproduction. We use a Gaussian Function (Bell Curve) centered around an optimal environmental value (
- Individuals closer to
$x_{opt}$ have higher fitness (max 1.0). -
$\sigma_{env}$ (Tolerance) determines how harsh the environment is.
The population size (
- If
$N < K$ , the population grows. - If
$N > K$ , the population shrinks due to competition.
- Node.js (v14 or higher)
-
Clone the repository
git clone https://github.com/YusufOztoprak/Evolutionary-Population-Dynamics-Simulator.git cd Evolutionary-Population-Dynamics-Simulator -
Install dependencies
npm install
-
Start the server
npm start
-
Open the simulator Go to
http://localhost:3000in your browser.
Evolutionary-Population-Dynamics-Simulator/
├── src/
│ ├── engine/ # Simulation logic (Population, Individual)
│ └── server.js # Express backend API
├── public/
│ ├── index.html # Main Simulator UI
│ ├── science.html # Biological Background Page
│ ├── math.html # Mathematical Model Page
│ └── js/ # Frontend logic (Charts, API calls)
├── package.json
└── README.md
This project is licensed under the MIT License - see the LICENSE file for details.
Developed by Yusuf Oztoprak 🎓