Question 0:

  1. Pour P0 = (BB,MM) = (4,12 ) c’est probable que les yeux bleu disparraissent

    Pour P0 = (12,4) C’est possible que les bleus stagnent à un moment ou même que les yeux bleus disparraissent.

    Pour P0 = (5,5) C’est possible que les yeux bleus baissent un peu en nombre et finissent par se stabiliser.

  2. On a possiblité de voir les mêmes prédictions, seulement avec les cas extremème plus faible car on a beaucoup plus de personnes.

  3. En ajoutant des allèles BB de ce fait on assure que les allèles bleu disparraissent pas. Ainsi la popuation va stager vers un certaine valeur.

Question 1:

On modélise le problème en prenant 0 pour les Yeux bleux, 1 pour les yeux marrons ayant une allèle marrons, et 2 pour les yeux marrons ayant 2 allèles marrons.

set.seed(1);
create_tab <- function( BB,MM, P ){
  
  return (tab <- c(rep(0,BB),rep(1,P-BB-MM),rep(2,MM)))
  
}

modelisation <- function (tab,P, I,N ){
  pop = tab ;
  
  #fin contient les N fin différentes à la Ième génération
  fin0 = c()
  fin1 = c() 
  fin2 = c()
  
  #resultat(t) contient le nombre d'occurance de t à chaque génération
  resultat0 = c(sum(pop==0))
  resultat1 = c(sum(pop==1))
  resultat2 = c(sum(pop==2))
  
  
  for (j in 0:(N-1)){
    for(i in 1:I){
      Pere = sample(tab, size = P ,replace = TRUE )
      Mere = sample(tab, size =  P ,replace = TRUE )
      allmere = ifelse(Mere==0,0,
             ifelse(Mere==2,1,sample(c(0,1),size=1,replace=T)));
      allpere = ifelse (Pere == 0 , 0 , ifelse( Pere == 2 , 1,sample(c(0,1),size=1,replace=T)))
      pop = allpere + allmere 
      
      resultat0[i+I*j] = sum(pop==0)
      resultat1[i+I*j] = sum(pop==1)
      resultat2[i+I*j] = sum(pop==2)
    }
    fin0[j] = resultat0[I*(j+1)]
    fin1[j] = resultat1[I*(j+1)]
    fin2[j] = resultat2[I*(j+1)]
  }

if(N>3){
  slices <- c(sum(fin2),sum(fin1), sum(fin0))
  lbls <- c("deux allèles marrons", "Une allèle marron", "Aucune allèle marron")
  pct <- round(slices/sum(slices)*100)
  lbls <- paste(lbls, pct) 
  lbls <- paste(lbls,"%",sep="")
  pie(slices,labels = lbls, col=rainbow(length(lbls)),
     main="Répartition moyenne des Allèles ") 
  
  slices <- c( sum(fin1)+sum(fin2),sum(fin0))
  lbls <- c("yeux Marron","yeux Bleu")
  pct <- round(slices/sum(slices)*100)
  lbls <- paste(lbls, pct) 
  lbls <- paste(lbls,"%",sep="")
  pie(slices,labels = lbls, col=rainbow(length(lbls)),
     main="Répartition moyenne de la couleur des yeux") 
   
   plot(fin0,type = "o",col = "blue",ylim=c(min(fin0,min(fin1,fin2)),max(fin0,max(fin1,fin2))), xlab = "Itérations", ylab = "Nombre de personnes", main = "Les différentes fins après I générations pour N itérations")
  lines(fin1, type = "o", col = "green")
  lines(fin2, type = "o", col = "brown")
}
else{
  
      slices <- c(resultat2[I],resultat1[I], resultat0[I])
  lbls <- c("deux allèles marrons", "Une allèle marron", "Aucune allèle marron")
  pct <- round(slices/sum(slices)*100)
  lbls <- paste(lbls, pct) 
  lbls <- paste(lbls,"%",sep="")
  pie(slices,labels = lbls, col=rainbow(length(lbls)),
     main="Répartition moyenne des Allèles ") 
  
  slices <- c(resultat0[I], resultat1[I]+resultat2[I])
  lbls <- c("yeux Marron","yeux Bleu" )
  pct <- round(slices/sum(slices)*100)
  lbls <- paste(lbls, pct) 
  lbls <- paste(lbls,"%",sep="")
  pie(slices,labels = lbls, col=rainbow(length(lbls)),
     main="Répartition moyenne de la couleur des yeux") 
  
  
  plot(resultat0,type = "l",col = "blue",ylim=c(min(resultat0,min(resultat1,resultat2)), max(resultat0,max(resultat1,resultat2)))  ,xlab = "Génération", ylab = "Nombre de personnes", 
     main = "L'évolution pour I générations")
  lines(resultat1, type = "l", col = "green")
  lines(resultat2, type = "l", col = "brown")
  }
}
  1. pour P0 = (BB,MM) =(4,12 ) avec une population de 20 et sur 20 générations et 10 itérations :
modelisation(create_tab(4,12,20),20 , 20, 10 )

On voit clairement que les yeux bleus restent minauritaire, même s’il est difficile que ceux-ci disparraissent vraiment. Ce qui est normal car la probabilité qu’un enfant de P1 ai les yeux bleux est proche de 1/10 (36/400) alors que celui pour les yeux marron est de 9/10 et ceux avec deux allèles marrons est de proche de 1/2 ( 196/400 ).

Modélisation Sur 100 itérations

modelisation(create_tab(4,12,20),20 , 20,100 )