Connexion élèves

Un monde de moutons et de loups...

D'après le cours de Frédéric Mandon sous licence Creative Commons BY NC SA, http://creativecommons.org/licenses/by-nc-sa/3.0/fr/.

Objectif

On veut modéliser le fonctionnement d’un écosystème, avec de l’herbe, des moutons et des loups : les moutons mangent l'herbe, les loups mangent les moutons.

Cette simulation est discrète : tous les « tours de jeu », les moutons ainsi que les loups se déplacent, mangent éventuellement, meurent parfois, et l’herbe pousse.

L’intérêt est d'observer l'évolution de la "population" de chaque protagoniste, l'herbe, les moutons et les loups.

1. Les moutons et l’herbe

Classe Monde

Principe

Cette classe est la carte sur laquelle évoluent les moutons.

Elle a pour attribut ( entre autres ) un tableau carré carte de dimension 50 x 50 (ou plus), qui représente une prairie.

Chaque case du tableau représente une zone sur laquelle pousse de l’herbe.

Ce tableau contient des coefficients entiers qui codent la présence ou pas d'herbe :

Le coefficient dans une case du tableau est réinitialisé à 0 lorsqu’un mouton « occupe » la case et mange l’herbe.

A chaque "battement d’horloge" modélisant l'évolution du temps, on augmente la valeur dans chaque case de 1 pour modéliser la pousse de l'herbe ( vous verrez la gestion du temps dans la classe Simulation ).

Attributs

Méthodes

On pourra initialiser les coefficients des cases de carte avec 50% de carrés herbus, et pour ceux qui n’ont pas d’herbe on initialisera le coefficient du tableau entre 0 et durée_repousse aléatoirement.

classe Mouton

Attributs

Méthodes

Il y a plusieurs façons de gérer les éventuelles sorties des moutons de la carte, mais la plus astucieuse consiste à utiliser l'opérateur modulo % ( = reste de la division entière ) sur les coordonnées du mouton; par exemple, que vaut 50 % 50 ? -1 % 50 ? A vous d'utiliser ceci judicieusement !

2. La simulation

Une classe Simulation, comme son nom l’indique, gèrera la simulation.

Attributs :

Méthode

Une seule méthode, simMouton() gère la simulation en créant une boucle qui remplira plusieurs fonctions les unes après les autres :

On peut arrêter la simulation s’il n’y a plus de moutons, ou s’il y en a plus qu’un nombre fixé (qu’on rajoutera en attribut). Dans ce dernier cas, les moutons ont conquis le monde...
On l’arrête dans tous les cas lorsque l’horloge sonne la fin du monde.

La méthode renvoie les deux listes de résultats.

Pour les tests, mettre fin_du_monde à 10. Réfléchissez aussi si à ce qui peut se passer en ce qui concerne le nombre de moutons d’une génération à la suivante. Les tests peuvent être longs dès que l’on dépasse 100 "battements" d’horloge suivant votre ordinateur.

Pour visualiser les résultats, vous pouvez utiliser le module Matplotlib pour tracer les courbes montrant l'évolution de l'herbe et des moutons au cours du "temps".

3. On rajoute les loups

Les loups "fonctionnent" comme les moutons, sauf qu’ils ne mangent pas d’herbe mais plutôt des moutons...Un loup ne mange qu’un seul mouton par tour.

On peut leur mettre un taux de reproduction de 5, et un gain sur la nourriture de 19. Si le gain est trop petit les loups meurent tous, s’il est trop grand les loups se multiplient trop, et avec les données de naissances la croissance devient exponentielle .

Il est logique de mettre au moins deux fois moins de loups que de moutons. Avec ces données et les précédentes, on obtient un système qui se stabilise.
Il est intéressant de trouver des valeurs initiales qui donnent un système pseudo-périodique (des sortes de sinusoïdes décalées ), ou bien des systèmes chaotiques.

Bonne simulation !

CODE COMPLET possible pour ce projet