Question 0 :


Intuition Q1 :
Pour P0= (BB0, MM0) = (4, 12)
Dans cette situation on a beaucoup plus d’alléles M que de B dans la popultaion de départ (a l’hauteur de 12 allèles B et 28 allèles M) dès la deuxieme génération on aura au minimum 4 allèles B et au maximum 8 donc on peux dire en moyenne 6 allèles B dont au maximum 2 personnes avec les yeux bleux. On peux donc s’attendre au bout de seulement 20 génération que ce ne soit pas encore stable et donc avoir des résultat très différents les uns des autres avec meme certain résultat ou les allèles B ont totalement disparues.
Pour P0= (BB0, MM0) = (12, 4)
Ici on voit le type d’allèles qui est en minorité est M et on se retrouve dans le meme cas que ci-dessus mais pour l’allèles M on peux donc s’attendre a une non disparition des allèles M.
Pour P0= (BB0, MM0) = (5, 5)
Dans ce dernier cas la première génération est deja équilibré alors on s’attend a ce que la 20eme génération le soit encore même si il y a toujours un risqe de dispartion.

Intuition Q2 :
P0= (400, 1200)
On peux imaginer que le risque de disparition est moindre et qu’avec une population plus nombreuse et plus de génération on va avoir des résultat pour différentes simulation que se ressemble d’avantage que la question précédente et donc qu’on aura en général un peu plus de personnes aux yeux marron qu’au yeux bleu.
P0= (1200, 400)
On va se retrouver dans le même cas que juste au dessus.
P0= (500, 500)
pareil car on a beaucoup de génération et une population élevé qui limite le risque de disparition.

Intuition Q3 :
Ce modèle risque de tendre vers une 2000éme génération stable car on anhile le risque de disparition.

Question 1 :

Init = function(taille, mm0, bb0){
  P0 = rep(0, taille);
  
  for (i in (mm0+1):(taille-bb0)){
    P0[i] = 1;
  }
  for (i in (taille-bb0+1):taille){
    P0[i] = 2;
  }
  P0
}

melange = function(P, taille){
  newP = sample(c(1:taille))
  for (i in 1:taille){
    newP[i] = P[newP[i]]
  }
  newP
}

simulation = function(mm0, bb0, Nb_generation, N){
  for (j in 1:10){
    P0 = Init (N, mm0, bb0);
    P = P0
    bb = rep(0, Nb_generation);
    mm = rep(0, Nb_generation);
    for (i in 1:Nb_generation){
      Pere = P;
      Mere = melange(P, N)
      
      P= ifelse(Pere == 0, 0, ifelse(Pere == 1, sample(x=c(0,1), size = N, replace=T), 1))
      M = ifelse(Mere == 0, 0, ifelse(Mere == 1, sample(x=c(0,1), size = N, replace=T), 1))
      Enfant = M+P
      P = Enfant
      bbi = ifelse(P == 2, 1, 0)
      mmi = ifelse(P == 0, 1, 0)
      BBi = sum(bbi)
      MMi = sum(mmi)
      bb[i] = BBi
      mm[i] = MMi
    }
    x <- seq(0, Nb_generation, length = Nb_generation)
    plot(x, mm, type = "l", ylim = range(c(mm, bb)), xlab = "", ylab = "")
    lines(x, mm, col = "blue")
    lines(x, bb, col = "red")
  }
}

simulation2 = function(mm0, bb0, Nb_generation, N){
  for (j in 1:10){
    P0 = Init (N, mm0, bb0);
    P = P0
    bb = rep(0, Nb_generation);
    mm = rep(0, Nb_generation);
    for (i in 1:Nb_generation){
      Pere = P;
      Mere = melange(P, N)
      
      P= ifelse(Pere == 0, 0, ifelse(Pere == 1, sample(x=c(0,1), size = N, replace=T), 1))
      M = ifelse(Mere == 0, 0, ifelse(Mere == 1, sample(x=c(0,1), size = N, replace=T), 1))
      Enfant = M+P
      Enfant[1] = 2
      Enfant[2] = 0
      P = Enfant
      bbi = ifelse(P == 2, 1, 0)
      mmi = ifelse(P == 0, 1, 0)
      BBi = sum(bbi)
      MMi = sum(mmi)
      bb[i] = BBi
      mm[i] = MMi
    }
    x <- seq(0, Nb_generation, length = Nb_generation)
    plot(x, mm, type = 'l', ylim = range(c(mm, bb)), xlab = "", ylab = "")
    lines(x, mm, col = "blue")
    lines(x, bb, col = "red")
  }
}
set.seed(5);
BB0 = 4;
MM0 = 12;
n = 20;
NB_generation = 20;

simulation(MM0, BB0, NB_generation, n)