Page 3 sur 3

Re: les preuves de l'évolution

Publié : 27 mai 2015, 19:47
par machtiern
Je suis confus... Je me retire sans faire de bruit...

Re: les preuves de l'évolution

Publié : 27 mai 2015, 19:53
par Lulu Cypher
machtiern a écrit :Je suis confus... Je me retire sans faire de bruit...
:a2:

Re: les preuves de l'évolution

Publié : 28 mai 2015, 13:44
par Ethel
Hello !

J'avais un peu de temps à perdre, je me suis amusée à faire un petit programme de sélection naturelle : l'environnement d'une population d'individus dont les tailles varient (uniformément) entre 0.1 et 1 change au temps 0 et à partir de là, leur nourriture se trouve en hauteur (aléatoire entre 0 et 1 par défaut). Quand ils n'ont plus à manger, ils meurent. Ils peuvent faire des bébés, qui prennent une taille comprise entre celles des parents. On voit l'évolution de la population sur plusieurs générations (10 par défaut). C'est sous Scilab, vous pouvez copier-coller le code ci-dessous dans un fichier .sce .
Spoiler
Afficher
// Un jour, l’environnement de la population des pikmins change : alors que jusqu'à présent, leur nourriture, le pikmiam, se trouvait au sol, un accident magnetico-telluro-quantique le fait maintenant léviter. Comment les pikmins vont-ils s'adapter à leur nouvel environnement ?

// effacer tous les graphs des simulations précédentes
xdel(winsid());
// effacer toutes les variables des simulations précédentes
clear;

//------------------------------------------------------------------------------
//paramètres qu'on peut bidouiller

// nombre de "pas de temps" (jours par ex) par génération
T=10;
// nombre total de générations
G=10;
// nombre d'individus de la première génération
N=1000;
// hauteur minimale de la nourriture ie difficulté à obtenir de la nourriture (entre 0 et 1)
difF=0;
// difficulté à faire un bébé (entre 0 (lapin) et 1 (panda) :-) )
difB=0.3;
// stock initial de nourriture de chaque individu
stockI=0;

//------------------------------------------------------------------------------

// la moitié de la population (les h premiers sont des filles, les autres des garçons ou vice-versa, l'individu n est en couple avec l'individu n+h)
h=floor(N/2);

//taille des individus de la première génération définie aléatoirement entre 0.1 et 1
taille=0.9*rand(1,N)+0.1;

// définition du vecteur des abscisses pour l'histogramme
[x]=linspace(0.1,1,90);

// calcul et enregistrement des tailles min, max et moy du nombre d'individus de la population
m(1,1)=min(taille);
M(1,1)=max(taille);
mm(1,1)=mean(taille);
Nn(1,1)=N;

// histogramme des tailles
figure;
histplot(x,taille);
xtitle('Histogramme des tailles', 'Tailles', 'Nombre d''individus');

// à chaque génération
for g=1:G

// chaque individu reçoit un stock de nourriture égal à stockI
stock=stockI*ones(1,N);

j=1;

// à chaque pas de temps
for t=1:T

// chaque individu trouve de la nourriture à une certaine hauteur déterminée aléatoirement entre 0 et 1
testfood=rand(1,N);

// pour chaque individu
for n=1:N

// si l'individu est aussi grand ou plus grand que la hauteur où se situe la nourriture qu'il a trouvé, il la prend
if taille(1,n)>=testfood(1,n)+difF

// dans ce cas son stock augmente de 1
stock(1,n)=stock(1,n)+1;

end

// si le stock de l'individu atteint 0, il meurt de faim :'-(
if stock(1,n)<=0;

// dans ce cas, il est "effacé" de la liste des tailles
taille(1,n)=0;

end

end

// chaque couple fait un lancé de dé pour avoir un bébé (si, si, c'est comme ça qu'on fait les bébés...:-) )
testbaby=rand(1,h);

// pour chaque couple
for n=1:h

// si le résultat du lancer de dé est supérieur à la valeur de la difficulté à avoir un bébé, et qu'aucun des deux parents n'est déjà mort, la cigogne leur amène un bébé
if taille(1,n)>0 & taille(1,n+h)>0 & testbaby(1,n)>difB

// la taille du bébé est une valeur aléatoire entre les tailles des deux parents
taillebaby(1,j)=rand()*abs(taille(1,n)-taille(1,n+h))+min(taille(1,n),taille(1,n+h));

// il y a un bébé de plus !
j=j+1;

end

end //(boucle sur les individus)

// chaque individu mange et perd 1 de nourriture (à chaque pas de temps)
stock=stock-1;

end //(boucle sur le temps)

// le nombre d'individus de la nouvelle génération est égal aux nombres de bébés
N=size(taillebaby,2);

// la moitié (h)sont des filles, l'autre des garçons
h=floor(N/2);

// la liste des tailles de la nouvelle génération est la liste des tailles des bébés
taille=taillebaby;

// histogramme des tailles
figure;
histplot(x,taille);
xtitle('Histogramme des tailles', 'Tailles', 'Nombre d''individus');

// calcul et enregistrement des tailles min, max et moy du nombre d'individus de la population
m(g+1,1)=min(taille);
M(g+1,1)=max(taille);
mm(g+1,1)=mean(taille);
Nn(g+1,1)=N;

end // (boucle sur les générations)

// définition du vecteur des abscisses pour les graphs
xx=[1:1:G+1];

// graph tailles min, max, moy de la population au cours des générations
figure;
plot2d(xx,[m M mm],leg="min@max@moy");
xtitle('Evolution des tailles', 'Génération', 'Taille');

//graph nombre d'individus de chaque génération
figure;
plot2d(xx,Nn);
xtitle('Evolution de la population', 'Génération', 'Nombre d''individus');
Voici les tailles à la génération 0 :
Figure0.png
à la génération 5 :
Figure5.png
à la génération 10 :
Figure10.png

Re: les preuves de l'évolution

Publié : 28 mai 2015, 13:46
par Ethel
En résumé, l'évolution des tailles au cours des générations :
FigR.png
Et le nombre d'individus au cours des générations :
FigN.png
Désolée c'est pas très joli... :oops:

Re: les preuves de l'évolution

Publié : 28 mai 2015, 14:59
par spin-up
Je viens d'essayer, et mon PC a pas digéré les 150 millions de Pikmins a la 42eme generation... :lol:
Mais la succession d'histogrammes faisait un tres joli graphe animé.

Prochaine etape, introduire une population de predateurs, leur quantite de nourriture etant la population de Pikmin.Quand les predateurs augmentent les pikmins diminuent, faisant diminuer les predateurs, donc les pikmins reaugmentent, etc...

Mieux...pour chasser le pikmin le predateur doit avoir une taille superieure ou egale au pikmin. Comme ca on verra une coevolution de la taille des deux populations.

Allez, au boulot, ca t'apprendra a planter mon PC avec tes populations invasives de pikmins libidineux!

Re: les preuves de l'évolution

Publié : 28 mai 2015, 15:09
par Ethel
spin-up a écrit :Je viens d'essayer, et mon PC a pas digéré les 150 millions de Pikmins a la 42eme generation... :lol:
...
Allez, au boulot, ca t'apprendra a planter mon PC avec tes populations invasives de pikmins libidineux!
Ah oui, c'est sûr qu'il faut être prudent avec les paramètres, sinon c'est l'invasion (ou l'extinction) :a2:

Re: les preuves de l'évolution

Publié : 28 mai 2015, 15:35
par Ethel
Spoiler
Afficher
// Un jour, l'environnement de la population des pikmins change : alors que jusqu'à présent, leur nourriture, le pikmiam, se trouvait au sol, un accident magnetico-telluro-quantique le fait maintenant léviter. Comment les pikmins vont-ils s'adapter à leur nouvel environnement ?

// effacer tous les graphs des simulations précédentes
xdel(winsid());
// effacer toutes les variables des simulations précédentes
clear;

//------------------------------------------------------------------------------
//paramètres qu'on peut bidouiller

// nombre de "pas de temps" (jours par ex) par génération
T=10;
// nombre total de générations
G=10;
// nombre d'individus de la première génération
N=1000;
// hauteur minimale de la nourriture ie difficulté à obtenir de la nourriture (entre 0 et 1)
difF=0;
// difficulté à faire un bébé (entre 0 (lapin) et 1 (panda) :-) )
difB=0.3;
// stock initial de nourriture de chaque individu
stockI=0;
// nombre max de pikmins, au delà, le programme quitte
limite=50000;

//------------------------------------------------------------------------------

// la moitié de la population (les h premiers sont des filles, les autres des garçons ou vice-versa, l'individu n est en couple avec l'individu n+h)
h=floor(N/2);

//taille des individus de la première génération définie aléatoirement entre 0.1 et 1
taille=0.9*rand(1,N)+0.1;

// définition du vecteur des abscisses pour l'histogramme
[x]=linspace(0.1,1,90);

// calcul et enregistrement des tailles min, max et moy du nombre d'individus de la population
m(1,1)=min(taille);
M(1,1)=max(taille);
mm(1,1)=mean(taille);
Nn(1,1)=N;

// histogramme des tailles
figure;
histplot(x,taille);
xtitle('Histogramme des tailles', 'Tailles', 'Nombre d''individus');

// à chaque génération
for g=1:G

// chaque individu reçoit un stock de nourriture égal à stockI
stock=stockI*ones(1,N);

j=1;

// à chaque pas de temps
for t=1:T

// chaque individu trouve de la nourriture à une certaine hauteur déterminée aléatoirement entre 0 et 1
testfood=rand(1,N);

// pour chaque individu
for n=1:N

// si l'individu est aussi grand ou plus grand que la hauteur où se situe la nourriture qu'il a trouvé, il la prend
if taille(1,n)>=testfood(1,n)+difF

// dans ce cas son stock augmente de 1
stock(1,n)=stock(1,n)+1;

end

// si le stock de l'individu atteint 0, il meurt de faim :'-(
if stock(1,n)<=0;

// dans ce cas, il est "effacé" de la liste des tailles
taille(1,n)=0;

end

end

// chaque couple fait un lancé de dé pour avoir un bébé (si, si, c'est comme ça qu'on fait les bébés...:-) )
testbaby=rand(1,h);

// pour chaque couple
for n=1:h

// si le résultat du lancer de dé est supérieur à la valeur de la difficulté à avoir un bébé, et qu'aucun des deux parents n'est déjà mort, la cigogne leur amène un bébé
if taille(1,n)>0 & taille(1,n+h)>0 & testbaby(1,n)>difB

// la taille du bébé est une valeur aléatoire entre les tailles des deux parents
taillebaby(1,j)=rand()*abs(taille(1,n)-taille(1,n+h))+min(taille(1,n),taille(1,n+h));

// il y a un bébé de plus !
j=j+1;

if j>limite

disp("Désolé, une météorite a anéanti votre population de pikmins (nombre max de pikmins atteint)");

resume;

end


end

end //(boucle sur les individus)

// chaque individu mange et perd 1 de nourriture (à chaque pas de temps)
stock=stock-1;

end //(boucle sur le temps)

// le nombre d'individus de la nouvelle génération est égal aux nombres de bébés
N=size(taillebaby,2);

// la moitié (h)sont des filles, l'autre des garçons
h=floor(N/2);

// la liste des tailles de la nouvelle génération est la liste des tailles des bébés
taille=taillebaby;

// histogramme des tailles
figure;
histplot(x,taille);
xtitle('Histogramme des tailles', 'Tailles', 'Nombre d''individus');

// calcul et enregistrement des tailles min, max et moy du nombre d'individus de la population
m(g+1,1)=min(taille);
M(g+1,1)=max(taille);
mm(g+1,1)=mean(taille);
Nn(g+1,1)=N;

end // (boucle sur les générations)

// définition du vecteur des abscisses pour les graphs
xx=[1:1:G+1];

// graph tailles min, max, moy de la population au cours des générations
figure;
plot2d(xx,[m M mm],leg="min@max@moy");
xtitle('Evolution des tailles', 'Génération', 'Taille');

//graph nombre d'individus de chaque génération
figure;
plot2d(xx,Nn);
xtitle('Evolution de la population', 'Génération', 'Nombre d''individus');
Voilà, j'ai rajouté une limite à la population, au delà, ça quitte.

Re: les preuves de l'évolution

Publié : 30 mai 2015, 07:23
par Christian
Scilab est une version open source d'un calculateur comme Matlab?

Re: les preuves de l'évolution

Publié : 30 mai 2015, 11:46
par Ethel
Christian a écrit :Scilab est une version open source d'un calculateur comme Matlab?
Oui, c'est l'idée. Après, je suppose qu'il y a des choses qu'on ne peut pas faire sous Scilab. J'ai l'habitude de Matlab mais c'est la première fois que je réutilise Scilab depuis la fac.

Re: les preuves de l'évolution

Publié : 30 mai 2015, 13:40
par spin-up
Le code d'Ethel tourne sous matlab si on remplace les / / par des % pour les commentaires et qu'on change remplace les lignes

histplot(x,taille);
xtitle('Histogramme des tailles', 'Tailles', 'Nombre d''individus');

par

V=hist(taille,x);
plot(x,V);

Re: les preuves de l'évolution

Publié : 30 mai 2015, 17:03
par PhD Smith
La page de présentation de Scilab.

Re: les preuves de l'évolution

Publié : 30 mai 2015, 17:06
par lau'jik
:shock: Comme je n'y comprend que tchi à vos logiciels (question évolution mes connaissances informatiques sont proche de la soupe primordiale :? ), voici donc un "jeu" où l'on peut faire évoluer des "bidules" (je ne sais comment appeler toutes ces espèces de petits napperons au crochet multicolors...) et intervenir sur certains paramètres. C'est un peu comme regarder un aquarium : ça calme :mrgreen:

Re: les preuves de l'évolution

Publié : 30 mai 2015, 17:49
par Phil goulet
Pour revenir au sujet du post:

Voici une video explicative sur l'évolution du Nerf Laryngé chez les mamifères:

https://www.youtube.com/watch?v=cO1a1Ek-HD0

Je trouvais l'explication interressante.

Re: les preuves de l'évolution

Publié : 30 mai 2015, 18:23
par Pepejul
En effet ! Merci du lien !

Re: les preuves de l'évolution

Publié : 08 juil. 2015, 18:03
par Christian
Il y a une expérience qui se déroule depuis 1988: E. Coli, cobayes depuis 60 000 générations.
Science Presse a écrit :Dans un laboratoire de l’Université d’État du Michigan, il y a 27 ans, le biologiste Richard Lenski a pris une souche d’E. coli et l’a distribuée dans 12 cultures différentes. Depuis, tous les 75 jours (toutes les 500 générations), des échantillons sont congelés, ce qui permet de revenir en arrière et de pointer des moments-clefs de l’évolution: au fil du temps en effet, de nouveaux traits sont apparus chez l’une ou l’autre des 12 familles. L’une d’elles a par exemple connu une «explosion démographique» imprévue en 2003: plutôt que de se contenter du glucose fourni par les humains pour se nourrir, cette famille a choisi du citrate provenant de la soupe dans laquelle elle se reproduit, un «aliment» qui, en temps normal, n’aurait pas dû faire partie de son alimentation.

Autrement dit, c’est l’évolution en direct.