Skip to content

aminems/AdamAndEve

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

9 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Adam and Eve Evolution Simulation

License C++

English | Français


English

Overview

This project is a population genetics simulator that explores how genetic diversity emerges from a founding population through inheritance, mutation, and genetic drift. Starting with two individuals (Adam and Eve), the simulation demonstrates how varied physical traits can develop over multiple generations.

Features

  • Genetic Inheritance Model: Diploid genetic system with Mendelian inheritance
  • Multiple Traits: Simulates skin color, eye color, hair color, and height
  • Mutation System: Random mutations introduce new genetic variations
  • Population Dynamics: Includes reproduction, aging, and mortality
  • Statistical Analysis: Tracks trait distributions across generations
  • Realistic Life Cycle: Age-based reproduction windows and mortality rates

Scientific Basis

The simulation implements several key concepts from population genetics:

  1. Mendelian Inheritance: Offspring randomly inherit one allele from each parent for each gene
  2. Incomplete Dominance: Some traits (like skin color and height) show blending
  3. Complete Dominance: Other traits (like eye and hair color) favor dominant alleles
  4. Genetic Mutation: Small random changes in allele values (±1) at 2% probability
  5. Genetic Drift: Random mating patterns cause allele frequencies to fluctuate

How It Works

The simulation uses a diploid genetic model where each individual has:

  • Two alleles per gene (one from each parent)
  • Four genetic traits: skin color (0-10), eye color (0-5), hair color (0-6), and height (0-10)
  • Age-based reproduction capability (ages 16-45)
  • Age-dependent mortality rates

Each generation:

  1. Fertile individuals (age 16-45) are identified
  2. Random mating occurs with 40% reproduction probability per fertile female
  3. Offspring inherit genes through Mendelian recombination with mutation
  4. All individuals age by one year
  5. Mortality is applied based on age-dependent probabilities

Building and Running

Prerequisites

  • C++ compiler with C++11 support (g++, clang++, etc.)
  • Make (optional, for using the Makefile)

Compilation

Using Make:

make
./evolution_sim

Manual compilation:

g++ -std=c++11 -o evolution_sim AdamAndEve/main.cpp AdamAndEve/human.cpp
./evolution_sim

Cleaning build artifacts

make clean

Configuration

You can modify simulation parameters in main.cpp:

  • TOTAL_GENERATIONS: Number of generations to simulate (default: 50)
  • STATS_INTERVAL: How often to display statistics (default: every 5 generations)
  • Reproduction probability: Currently 40% per fertile female (line 102)
  • Mutation rate: Currently 2% per allele (defined in human.h:81)

Understanding the Output

The simulation displays:

  • Generation Progress: Birth counts per generation
  • Population Statistics: Total and alive population counts every N generations
  • Trait Distributions: Percentage breakdown of skin, eye, and hair colors
  • Final Summary: Total individuals created and genetic diversity achieved

Example Output

=== Generation 10 Statistics ===
Total Population: 145 (Alive: 98)

Skin Color Distribution:
  Light: 23 (23.47%)
  Medium: 51 (52.04%)
  Dark: 24 (24.49%)

Eye Color Distribution:
  Green: 15 (15.31%)
  Hazel: 38 (38.78%)
  Light Brown: 28 (28.57%)
  Brown: 17 (17.35%)

Limitations and Considerations

This is a simplified educational model. Real human genetics involves:

  • Thousands of genes affecting each trait
  • Complex dominance patterns and epistasis
  • Environmental factors
  • Much larger population sizes
  • Non-random mating (assortative mating)

Educational Purpose

This simulation demonstrates:

  • How genetic diversity can arise from limited initial variation
  • The role of mutation in creating new alleles
  • How random processes (drift) affect small populations
  • Basic principles of population genetics

It is a computational experiment to explore genetic mechanisms, not a historical or anthropological model.

Author

Created by Mohamed Amine BERGACH (2015) Updated and improved: 2025

License

This project is open source. Feel free to use and modify for educational purposes.


Français

Aperçu

Ce projet est un simulateur de génétique des populations qui explore comment la diversité génétique émerge d'une population fondatrice par l'hérédité, la mutation et la dérive génétique. En partant de deux individus (Adam et Ève), la simulation démontre comment des traits physiques variés peuvent se développer sur plusieurs générations.

Question de Recherche

Comment les races ont-elles émergé ?

Ce projet part d'une question simple : en partant d'un postulat créationniste où à l'origine il y avait Adam et Ève, peut-on observer l'émergence de différences et de classifications après plusieurs générations ?

C'est une expérience computationnelle pour explorer les mécanismes génétiques.

Caractéristiques

  • Modèle d'hérédité génétique: Système génétique diploïde avec hérédité mendélienne
  • Traits multiples: Simule la couleur de peau, des yeux, des cheveux et la taille
  • Système de mutation: Les mutations aléatoires introduisent de nouvelles variations
  • Dynamique de population: Inclut reproduction, vieillissement et mortalité
  • Analyse statistique: Suit la distribution des traits à travers les générations
  • Cycle de vie réaliste: Fenêtre de reproduction et taux de mortalité basés sur l'âge

Fonctionnement

La simulation utilise un modèle génétique diploïde où chaque individu possède :

  • Deux allèles par gène (un de chaque parent)
  • Quatre traits génétiques : couleur de peau (0-10), yeux (0-5), cheveux (0-6), taille (0-10)
  • Capacité de reproduction basée sur l'âge (16-45 ans)
  • Taux de mortalité dépendant de l'âge

Compilation et Exécution

Avec Make:

make
./evolution_sim

Compilation manuelle:

g++ -std=c++11 -o evolution_sim AdamAndEve/main.cpp AdamAndEve/human.cpp
./evolution_sim

Configuration

Vous pouvez modifier les paramètres dans main.cpp:

  • TOTAL_GENERATIONS: Nombre de générations (défaut: 50)
  • STATS_INTERVAL: Fréquence d'affichage des statistiques (défaut: 5)
  • Probabilité de reproduction: 40% par femme fertile (ligne 102)
  • Taux de mutation: 2% par allèle (human.h:81)

Objectif Éducatif

Cette simulation démontre:

  • Comment la diversité génétique peut émerger d'une variation initiale limitée
  • Le rôle de la mutation dans la création de nouveaux allèles
  • Comment les processus aléatoires affectent les petites populations
  • Les principes de base de la génétique des populations

Auteur

Créé par Mohamed Amine BERGACH (2015) Mis à jour et amélioré : 2025

Toute bonne volonté de comprendre est la bienvenue.


Contributing

Contributions are welcome! Feel free to:

  • Report bugs
  • Suggest new features
  • Improve documentation
  • Submit pull requests

Acknowledgments

This project is an educational exploration of population genetics principles. It demonstrates how computational models can help us understand complex biological processes.

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published