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 sagit de la réplication dans Cormas dun modele "démo" de la librairie de Netlogo : http://ccl.northwestern.edu/netlogo/models/WolfSheepPredation(DockedHybrid).
Selon les mots de Wilensky, U. (2005), ce modele explore la stabilité des systemes prédateurs-proies. Ces systemes sont instables sils tendent a entraîner lextinction dune ou de plusieurs especes. A lopposé, un systeme stable tend a se maintenir dans le temps malgré les fluctuations de la taille des populations.
Ce modele propose deux variantes principales :
 grid
Version 1 :
Des loups et des moutons errent au hasard dans un paysage, les loups essayant dattraper 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 nen ont plus, ils meurent.
Chaque espece a une probabilité de reproduction fixe a chaque step.
Dans cette version, lherbe nest pas un facteur limitant pour les moutons. Par conséquent, les moutons ne gaspillent pas dénergie en se déplacant, ni ne la récuperent en broutant. Cette version produit une dynamique intéressante mais instable. Ce modele illustre la dynamique dun systeme 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 meme que dans la version 1. Par contre ici les moutons mangent de lherbe pour gagner de lénergie, et en perdent lors de leur déplacement. Quand leur énergie sépuise, ils meurent.
Une fois broutée, lherbe se régénere au bout dun certain temps.
Bien que cette version soit plus complexe, elle est plus stable et ressemble davantage aux modeles classiques tels que celui de Lotka Volterra, qui  sous-estime la forte probabilité dextinction dans le cas de petites populations. Ici, un SMA donne des résultats plus réalistes. (Voir Wilensky & Rand, 2015 ; chapitre 4).

Description du modele

A partir de la description succincte ci-dessus, mais aussi de lanalyse du code du modele, nous avons généré plusieurs diagrammes UML.
Voici le diagramme de classe :
UML class diag
Diagramme de classe du modele 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 nen ont plus, ils meurent. Chaque loup a une probabilité fixe de reproduction a chaque step". Voici la traduction en diagramme dactivité :
diag Activite Wolf   diag Activite Sheep 1
Diagramme dactivite 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 lexplique Wilensky, cette version produit une dynamique instable : soit la disparition des loups et lexplosition démogaphique des moutons (car pas de limite) : courbes de gauche (dans Netlogo), soit la disparition dabord des moutons, suivie par celle des loups qui nont plus rien a 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 a celles du loup :
diag. acti Sheep v2 
"Les moutons se nourrissent dherbe pour gagner de lénergie et en perdent a mesure quils bougent. Quand leur énergie sépuise, les moutons meurent. Une fois mangée, lherbe se régénere au bout dun certain temps."



        diag. statetransition
         Diag. détat-transition de lherbe.



Diagramme dactivité 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 : a gauche, version originale sous Netlogo, a droite, réplication sous Cormas.
Pour la version 2, on note une stabilisation des dynamiques, qui fluctuent mais ou 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 dou venait cette différence importante.

Analyse des différentes implémentations

La description textuelle du modele et sa traduction en diagrammes de classe ne permettent pas dobtenir deux implémentations convergentes. Il a donc fallu comprendre dou venait cette différence. Apres 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 dun mouvement aléatoire sappelle #randomWalk : elle permet a un agent de bouger de sa cellule vers une des 8 cellules voisines prise au hasard. Cela ressemble donc a un mouvement brownien. Dans le cas de limplémentation de ce modele sous Netlogo, le mouvement sécrivait de la facon suivante :
code
Ici, chaque agent (turtle) se déplace dune cellule, mais en modifiant sa direction de + ou - 50°. Cela entraine un mouvement plus orienté quun 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 systeme.
Ce mouvement orienté a été réimplémenté dans la version sous Cormas. Il a fallu rajouté un attribut "direction" aux agents qui, a linitialisation, contient une valeur aléatoire entre 0° et 360°, ainsi quun attribut "maxDeviation" valant 50°. Avec ces modifications, nous obtenons des résultats semblables :
result cormas v3
Dans la meme idée, nous avons modifié le modele original sous Netlogo afin dintégrer le mouvement brownien:

code 2

Nous obtenons alors des dynamiques semblables a la 1ere 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 modele 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 modele sous Cormas propose 2 versions : une version standard (WolfSheepPredation.pst) et une version avec des diagrammes dactivité (WolfSheepPredation_ActivDiag.pst) :
activ Cormas