The circle of life

Source: https://ih1.redbubble.net/image.874690798.4731/st,small,845x845-pad,1000x1000,f8f8f8.jpg

Cette semaine, c'est Damien Lesignac qui vous propose un kata : The Circle of Life avec les équations de Lokta-Volterra.

Briefing du Kata :

Au programme aujourd'hui, il ne s'agira pas tellement de cercle mais plutôt de sinus: ceux des équations de Lokta-Volterra.

Kezako ?

En résumé, il s'agit d'une modélisation mathématique de la relation qui existe entre l'évolution d'une population de proie et l'évolution de la population de ses prédateurs.

Source: https://upload.wikimedia.org/wikipedia/commons/7/70/Lotka_Volterra_Dynamique.gif

En 4 phrases:

  • lorsque les proies sont peu nombreuses, le manque de nourriture entraine la diminution de la population de prédateurs
  • lorsque les prédateurs sont peu nombreux, la diminution du danger entraine l'augmentation de la population de proies
  • lorsque les proies sont nombreuses, l'abondance de nourriture entraine l'augmentation de la population de prédateurs
  • lorsque les prédateurs sont nombreux, l'augmentation du danger entraine la diminituion de la population de proies.                    
D'accord, mais moi je code quoi ?      

Rien de moins qu'un écosystème virtuel. Une simulation mettant en jeu une population de proies, une population de prédateurs, une relation de prédation et une relation de reproduction, dont la complexité se limitera à ton imagination.    

Par exemple, une relation de prédation simple:

  • dans `x` % des cas, la prédation est réussie: le prédateur survit et la proie meurt
  • dans `(100 - x)` % des cas, la prédation échoue: le prédateur meurt et la proie survit.

Bien sûr, cette version ultra-simplifiée est très peu représentative de la réalité. Tu peux par exemple décider d'ajouter une notion de distance entre les entités, un système de *points de vie* pour que les prédateurs ne meurent pas au premier échec, ...

Cet exercice est volontairement libre pour que ton imagination puisse s'exprimer.

Et le rapport avec Lotka-Volterra ?

Si ta simulation est stable, alors elle ne devrait aboutir ni à l'extinction, ni à la prolifération (croissance infinie qui ne peut correspondre à la réalité) de l'une ou l'autre des deux (ou plus ;) ) espèces. En traçant la courbe de l'évolution des populations, tu devrais donc retrouver des formes familières.

Pas facile...

De quoi faire réfléchir sur la complexité et la fragilité de notre écosystème.

Solution :

Voici un petit exemple en Java de simulation pas encore stabilisée.

TakiVeille

TakiVeille