AccueilDemarcheLogicielApplicationsBiblioFormationReseaux

 

 

 

 

 

Wolf Sheep Predation 

Dynamique des populations entre proies et prédateurs

Moira Zellner (University of Illinois, mzellner@uic.edu), Pierre Bommel (Cirad, bommel@cirad.fr)  



Objectif

Il s'agit de la réplication dans Cormas d'un modèle "démo" de la librairie de Netlogo : http://ccl.northwestern.edu/netlogo/models/WolfSheepPredation(DockedHybrid).
Selon les mots de Wilensky, U. (2005), ce modèle explore la stabilité des systèmes prédateurs-proies. Ces systèmes sont instables s'ils tendent à entraîner l'extinction d'une ou de plusieurs espèces. A l'opposé, un système stable tend à se maintenir dans le temps malgré les fluctuations de la taille des populations.
Ce modèle propose deux variantes principales :
 grid
Version 1 :
Des loups et des moutons errent au hasard dans un paysage, les loups essayant d'attraper des moutons. A chaque itération (step), un loup perd de l'énergie et doit manger des moutons pour la récupérer. Quand ils n'en ont plus, ils meurent.
Chaque espèce a une probabilité de reproduction fixe à chaque step.
Dans cette version, l'herbe n'est pas un facteur limitant pour les moutons. Par conséquent, les moutons ne gaspillent pas d'énergie en se déplaçant, ni ne la récupèrent en broutant. Cette version produit une dynamique intéressante mais instable. Ce modèle illustre la dynamique d'un système riche en nutriments, comme deux souches bactériennes dans une boîte de Pétri (Gause, 1934).
Version 2 :
Le comportement des loups est le même que dans la version 1. Par contre ici les moutons mangent de l'herbe pour gagner de l'énergie, et en perdent lors de leur déplacement. Quand leur énergie s'épuise, ils meurent.
Une fois broutée, l'herbe se régénère au bout d'un certain temps.
Bien que cette version soit plus complexe, elle est plus stable et ressemble davantage aux modèles classiques tels que celui de Lotka Volterra, qui  sous-estime la forte probabilité d'extinction dans le cas de petites populations. Ici, un SMA donne des résultats plus réalistes. (Voir Wilensky & Rand, 2015 ; chapitre 4).

Description du modèle

A partir de la description succincte ci-dessus, mais aussi de l'analyse du code du modèle, nous avons généré plusieurs diagrammes UML.
Voici le diagramme de classe :
UML class diag
Diagramme de classe du modèle pour la version 2.
Version 1
"A chaque itération les loups perdent de l'énergie, et ils doivent manger des moutons pour la récupérer.
Quand ils n'en ont plus, ils meurent. Chaque loup a une probabilité fixe de reproduction à chaque step". Voici la traduction en diagramme d'activité :
diag Activite Wolf   diag Activite Sheep 1
Diagramme d'activite du loup et du mouton (pour la version 1)
Diagramme de séquence pour la version 1 :
diag seq 1
Résultats pour la version 1 :
resultNetlogo-v1  resultCormas-v1
Comme l'explique Wilensky, cette version produit une dynamique instable : soit la disparition des loups et l'explosition démogaphique des moutons (car pas de limite) : courbes de gauche (dans Netlogo), soit la disparition d'abord des moutons, suivie par celle des loups qui n'ont plus rien à manger : courbes de droite (dans Cormas).
Version 2
Le diagramme de classe et les activités du loup sont identiques. Les activités du mouton sont maintenant semblables à celles du loup :
diag. acti Sheep v2 
"Les moutons se nourrissent d'herbe pour gagner de l'énergie et en perdent à mesure qu'ils bougent. Quand leur énergie s'épuise, les moutons meurent. Une fois mangée, l'herbe se régénère au bout d'un certain temps."



        diag. statetransition
         Diag. d'état-transition de l'herbe.



Diagramme d'activité du mouton pour la version 2.

Diagramme de séquence pour la version 2 :
diag seq 2

Résultats pour la version 2 : une réplication incorrecte
result Netlogo v2  result Cormas v2
Résultats des deux implémentations : à gauche, version originale sous Netlogo, à droite, réplication sous Cormas.
Pour la version 2, on note une stabilisation des dynamiques, qui fluctuent mais où les deux populations se maintiennent.
Par contre, les résultats différent entre les deux plateformes : dans la version originale sous Netlogo (graphe de gauche), on note une moyenne de 150 moutons et de 75 loups. Dans la version sous Cormas (graphe de droite), il y a 200 moutons en moyenne pour moins de 20 loups. Il était donc nécessaire de comprendre d'où venait cette différence importante.

Analyse des différentes implémentations

La description textuelle du modèle et sa traduction en diagrammes de classe ne permettent pas d'obtenir deux implémentations convergentes. Il a donc fallu comprendre d'où venait cette différence. Après anaylse du code de Netlogo, nous avons compris que la différence provenait essentiellement du mouvement aléatoire des agents. Dans le cas de Cormas, la méthode prédéfinie d'un mouvement aléatoire s'appelle #randomWalk : elle permet à un agent de bouger de sa cellule vers une des 8 cellules voisines prise au hasard. Cela ressemble donc à un mouvement brownien. Dans le cas de l'implémentation de ce modèle sous Netlogo, le mouvement s'écrivait de la façon suivante :
code
Ici, chaque agent (turtle) se déplace d'une cellule, mais en modifiant sa direction de + ou - 50°. Cela entraine un mouvement plus orienté qu'un simple mouvement brownsien. Cette procédure qui n'était pas décrite dans le texte a des conséquences importantes sur la dynamique globale du système.
Ce mouvement orienté a été réimplémenté dans la version sous Cormas. Il a fallu rajouté un attribut "direction" aux agents qui, à l'initialisation, contient une valeur aléatoire entre 0° et 360°, ainsi qu'un attribut "maxDeviation" valant 50°. Avec ces modifications, nous obtenons des résultats semblables :
result cormas v3
Dans la même idée, nous avons modifié le modèle original sous Netlogo afin d'intégrer le mouvement brownien:

code 2

Nous obtenons alors des dynamiques semblables à la 1ère implémentation sous Cormas :
V3 netlogo

Voici donc la version correcte du diagramme de classe qui prend en compte les déplacements orientés :

classDiag final
  • Télécharger le modèle WolfSheepPredation pour Cormas, ainsi que la version modifiée pour Netlogo. Le fichier UML sous Astah
  • Pour en savoir plus, contactez les auteurs.
  • A noter que le modèle sous Cormas propose 2 versions : une version standard (WolfSheepPredation.pst) et une version avec des diagrammes d'activité (WolfSheepPredation_ActivDiag.pst) :
activ Cormas


Le Cirad Centre de coopération internationale en recherche agronomique pour le développement
Informations légales © Copyright Cirad 2001-2015 cormas-webmaster@cirad.fr