Question 0 :

En vue de la description correspondant à l’évolution de la situation on peut estimer que puisque l’allèle bleue est récessif il y a plus de chance d’obtenir des yeux marrons pour un individu que des yeux bleus. On peut donc supposer que les yeux bleus sont voués à être de moins en moins présents au fil des populations et donc de disparaitre au bout d’un certains nombres de générations. La proportion de personnes ayant les yeux bleus va donc décroitre.

Question 1 :

Nous avons une population de P=20 individus, un horizon de Imax=20 et une population initiale P0

crealist=function(p,bb0,mm0){
  l=c();
  if (length(l)<p){
    for (j in 0:bb0){
    l[j]=c(1);
    }
    for (k in 0:(mm0-1)){
      l[k+bb0+1]=c(2);
    }
    for (x in (mm0+bb0):(p-1)){
      l[x+1]=c(3);
    }
  }
  return (l);
}

exo1b=function(p,i,bb0,mm0){
  l=c();
  lb=c(); #liste des valeurs de BBi
  lm=c(); #liste des valeurs de MMi
  lb[0]=bb0/p;
  lm[0]=mm0/p;
  c=0;
  #initialisation de la liste l composée du nombre d'individus BB (1), MM (2) et BM (3)
  l=crealist(p,bb0,mm0);
  ##return (l);
  #on effectue la simulation pour Imax générations
  for (r in 1:i-1){
      nbm=0;
      nbb=0;
    #on effectue la création de p individu dans la rième génération
    for (s in 1:p-1){
      i1=sample.int(p-1,1); #on tire un nb aléatoire entre 0 et p-1 pour choisir ensuite un parent
      i2=sample.int(p-1,1); #de même pour le second parent
      p1=l[i1]; #on détermine le premier parent
      p2=l[i2]; #on détermine le second parent
    #on détermine le premier allèle en fonction du parent choisi
      if (p1==1){
        a1='b';
      }
      else if (p1==2){
        a1='m'
      }
      else {
        y=runif(1,0,1);
        if (y<=0.5){
          a1 = 'b';
        }
        else {a1='m';}
      }
    #on fait de même pour le second allèle
      if (p2==1){
        a2='b';
      }
      else if (p2==2){
        a2='m'
      }
      else {
        y=runif(1,0,1);
        if (y<=0.5){
          a2 = 'b';
        }
        else {a2='m';}
      }
    #on place alors l'individu dans la liste correspondante (suivant ses allèles (MM ou BB)
      if (a1==a2){
         if (a1=='m'){
          nbm=nbm+1;
        }
        else {nbb=nbb+1;}
      }
    }
  lb[r]=nbb/p;
  lm[r]=nbm/p;
  l=crealist(p,nbb,nbm);
  }
  #print ('Les valeurs de BBi pour i allant de 0 à Imax sont :');
  return (lb);
}

exo1m=function(p,i,bb0,mm0){
  l=c();
  lb=c(); #liste des valeurs de BBi
  lm=c(); #liste des valeurs de MMi
  lb[0]=bb0/p;
  lm[0]=mm0/p;
  c=0;
  #initialisation de la liste l composée du nombre d'individus BB (1), MM (2) et BM (3)
  l=crealist(p,bb0,mm0);
  ##return (l);
  #on effectue la simulation pour Imax générations
  for (r in 1:i-1){
      nbm=0;
      nbb=0;
    #on effectue la création de p individu dans la rième génération
    for (s in 1:p-1){
      i1=sample.int(p-1,1); #on tire un nb aléatoire entre 0 et p-1 pour choisir ensuite un parent
      i2=sample.int(p-1,1); #de même pour le second parent
      p1=l[i1]; #on détermine le premier parent
      p2=l[i2]; #on détermine le second parent
    #on détermine le premier allèle en fonction du parent choisi
      if (p1==1){
        a1='b';
      }
      else if (p1==2){
        a1='m'
      }
      else {
        y=runif(1,0,1);
        if (y<=0.5){
          a1 = 'b';
        }
        else {a1='m';}
      }
    #on fait de même pour le second allèle
      if (p2==1){
        a2='b';
      }
      else if (p2==2){
        a2='m'
      }
      else {
        y=runif(1,0,1);
        if (y<=0.5){
          a2 = 'b';
        }
        else {a2='m';}
      }
    #on place alors l'individu dans la liste correspondante (suivant ses allèles (MM ou BB)
      if (a1==a2){
         if (a1=='m'){
          nbm=nbm+1;
        }
        else {nbb=nbb+1;}
      }
    }
  l=crealist(p,nbb,nbm);
  lb[r]=nbb/p;
  lm[r]=nbm/p;
  }
  #print ('Les valeurs de MMi pour i allant de 0 à Imax sont :');
  return (lm);
}

#Veuillez pardonner le surplus de code, mais il s'agissait d'un soucis d'affichage des courbes.

Courbes représentatives de l’évolution de BBi et MMi au cours du temps

On peut voir ici la courbe d’évolution des BBi (bleu) et MMi (rouge) pour P=20, Imax=20 et les différentes P0.

On remarque donc, que sur une population réduite la proportion de départ est conservée par la suite, c’est à dire que pour 12 MM et 4 BB on retrouve au bout de 20 générations toujours plus de MM que de BB (qui on tendence à tendre vers 0) et inversement pour 4 BB et 12 MM. Pour une proportion équitable au départ on remarque que le doublet MM a plus tendence à être présent au bout de 20 générations que le doublet BB (du à l’aspect récessif du bleu dans les doublets BM).

Question 2 :

Nous avons maintenant une population de P=2000 individus, un horizon de Imax=100 et une population initiale P0=(BB0,MM0)

Courbes représentatives de l’évolution de BBi et MMi au cours du temps

On peut voir ici la courbe d’évolution des BBi (bleu) et MMi (rouge) pour P=2000, Imax=100 et les différents P0.

Pour cette nouvelle situation à population plus étendue on se rend compte que la prédominence d’une couleur au départ de l’évolution est totalement conservée par la suite. Sur les deux premières figures de cette question on distingue clairement une séparation entre le pourcentage de doublets MM élévé et celui des BB très faible lors d’une population initiale de P0=(400,1200) et inversement pour une population P0=(1200,400). Pour une population initiale équilibrée on remarque que les courbes se mèlent en raison du côté aléatoire mais que cependant les courbes les plus basses sont bien des courbes des doublets BB qui tendent vers 0 en raison de l’aspect récessif de la couleur bleue.

Question 3 :

Nous allons maintenant étudier le cas d’une population avec préservation, c’est à dire que l’on gardera constamment au moins un BB et un MM dans notre population actuelle.

Voici le nouvel algorithme :

# On initialise alors nos nombre de BB et nombre de MM (nbb et nbm) à 1 afin de respecter la condition que pour tout i BBi > 1 et MMi > 1. 
# Et l'on effectue alors que p-2 tirages.

exo3b=function(p,i,bb0,mm0){
  l=c();
  lb=c(); #liste des valeurs de BBi
  lm=c(); #liste des valeurs de MMi
  lb[0]=bb0/p;
  lm[0]=mm0/p;
  c=0;
  #initialisation de la liste l composée du nombre d'individus BB (1), MM (2) et BM (3)
  l=crealist(p,bb0,mm0);
  ##return (l);
  #on effectue la simulation pour Imax générations
  for (r in 1:i-1){
      nbm=1;
      nbb=1;
    #on effectue la création de p individu dans la rième génération
    for (s in 1:p-2){
      i1=sample.int(p-1,1); #on tire un nb aléatoire entre 0 et p-1 pour choisir ensuite un parent
      i2=sample.int(p-1,1); #de même pour le second parent
      p1=l[i1]; #on détermine le premier parent
      p2=l[i2]; #on détermine le second parent
    #on détermine le premier allèle en fonction du parent choisi
      if (p1==1){
        a1='b';
      }
      else if (p1==2){
        a1='m'
      }
      else {
        y=runif(1,0,1);
        if (y<=0.5){
          a1 = 'b';
        }
        else {a1='m';}
      }
    #on fait de même pour le second allèle
      if (p2==1){
        a2='b';
      }
      else if (p2==2){
        a2='m'
      }
      else {
        y=runif(1,0,1);
        if (y<=0.5){
          a2 = 'b';
        }
        else {a2='m';}
      }
    #on place alors l'individu dans la liste correspondante (suivant ses allèles (MM ou BB)
      if (a1==a2){
         if (a1=='m'){
          nbm=nbm+1;
        }
        else {nbb=nbb+1;}
      }
    }
  lb[r]=nbb/p;
  lm[r]=nbm/p;
  l=crealist(p,nbb,nbm);
  }
  #print ('Les valeurs de BBi pour i allant de 0 à Imax sont :');
  return (lb);
}

exo3m=function(p,i,bb0,mm0){
  l=c();
  lb=c(); #liste des valeurs de BBi
  lm=c(); #liste des valeurs de MMi
  lb[0]=bb0/p;
  lm[0]=mm0/p;
  c=0;
  #initialisation de la liste l composée du nombre d'individus BB (1), MM (2) et BM (3)
  l=crealist(p,bb0,mm0);
  ##return (l);
  #on effectue la simulation pour Imax générations
  for (r in 1:i-1){
      nbm=1;
      nbb=1;
    #on effectue la création de p individu dans la rième génération
    for (s in 1:p-2){
      i1=sample.int(p-1,1); #on tire un nb aléatoire entre 0 et p-1 pour choisir ensuite un parent
      i2=sample.int(p-1,1); #de même pour le second parent
      p1=l[i1]; #on détermine le premier parent
      p2=l[i2]; #on détermine le second parent
    #on détermine le premier allèle en fonction du parent choisi
      if (p1==1){
        a1='b';
      }
      else if (p1==2){
        a1='m'
      }
      else {
        y=runif(1,0,1);
        if (y<=0.5){
          a1 = 'b';
        }
        else {a1='m';}
      }
    #on fait de même pour le second allèle
      if (p2==1){
        a2='b';
      }
      else if (p2==2){
        a2='m'
      }
      else {
        y=runif(1,0,1);
        if (y<=0.5){
          a2 = 'b';
        }
        else {a2='m';}
      }
    #on place alors l'individu dans la liste correspondante (suivant ses allèles (MM ou BB)
      if (a1==a2){
         if (a1=='m'){
          nbm=nbm+1;
        }
        else {nbb=nbb+1;}
      }
    }
  l=crealist(p,nbb,nbm);
  lb[r]=nbb/p;
  lm[r]=nbm/p;
  }
  #print ('Les valeurs de MMi pour i allant de 0 à Imax sont :');
  return (lm);
}

On effectue alors les même représentations graphique qu’à la première situation (sur population réduite)

On a remarqué précédemment qu’il était courant que l’un des doublet tende vers 0. Avec cette nouvelle configuration on évite donc à 100% l’extinction du doublet BB ou du doublet MM. Après simulation on remarque en effet qu’aucun doublet n’atteint 0. Le système n’est cependant pas stable en raison des variations très flagrantes sur chaque configuration. Mais l’on peut spécifier la plus forte présence du doublet MM sur chaque configuration où MM0 est supérieur ou égal à BB0 lors des variations. Mais sur chaque graphique on constate le doublet BB supérieur au doublet MM. En effet on constate des lignes horizontales bleues supérieurement situées par rapport aux lignes horizontales rouges.

On peut donc en déduire que ce système favorise le développement des yeux bleus.

Question 4 :

Le resultat obtenu diffère donc de mon intuition initiale puisqu’on remarque la non disparission des yeux bleus. Beaucoup d’hypothèses furent étudiées et elles me semblent suffisantes. La priorité en cas de changement du modèle serait donc d’essayer de trouver un équilibre entre le nombre de MM et de BB.