Modélisation algorithmique d'un troupeau de moutons

16
Modélisation du troupeau et du chien Deux algorithmes de référence Proposition d’un programme Python Modélisation algorithmique d’un troupeau de moutons Jules Collin 2014 - 2015 Jules Collin Modélisation algorithmique d’un troupeau de moutons

Transcript of Modélisation algorithmique d'un troupeau de moutons

Page 1: Modélisation algorithmique d'un troupeau de moutons

Modélisation du troupeau et du chienDeux algorithmes de référence

Proposition d’un programme Python

Modélisation algorithmique d’un troupeau demoutons

Jules Collin

2014 - 2015

Jules Collin Modélisation algorithmique d’un troupeau de moutons

Page 2: Modélisation algorithmique d'un troupeau de moutons

Modélisation du troupeau et du chienDeux algorithmes de référence

Proposition d’un programme Python

1 Modélisation du troupeau et du chienLes différentes modélisations du troupeauLe comportement du chien de berger

2 Deux algorithmes de référenceAlgorithme de Vaughan (2000)Algorithme de Bennett (2010)Comparaison des algorithmes

3 Proposition d’un programme PythonPrincipe généralRencontre avec un bergerLe programmeOptimisationCalcul de la complexité

Jules Collin Modélisation algorithmique d’un troupeau de moutons

Page 3: Modélisation algorithmique d'un troupeau de moutons

Modélisation du troupeau et du chienDeux algorithmes de référence

Proposition d’un programme Python

Les différentes modélisations du troupeauLe comportement du chien de berger

On considère les 4 mouvements suivants pour les moutons :Mouvement aléatoireRépulsion des autres moutons trop prochesFuir le chienAttraction vers les membres du troupeau

- Attraction vers le (ou les) mouton(s) le(s) plus proche(s)- Attraction vers le centre de masse du troupeau (ou celui des

moutons les plus proches)- Attraction vers un mouton quelconque- Attraction vers tous les moutons

⇒ On les implémente toutes, en pondérant leur action.

Jules Collin Modélisation algorithmique d’un troupeau de moutons

Page 4: Modélisation algorithmique d'un troupeau de moutons

Modélisation du troupeau et du chienDeux algorithmes de référence

Proposition d’un programme Python

Les différentes modélisations du troupeauLe comportement du chien de berger

Rôle principal du chien : rassembler les moutons.Rôle secondaire : guider le troupeau vers une zone précise.Règle primaire : ne jamais rentrer dans le troupeau. Si le chiense trouve dans le troupeau, il doit en sortir le plus rapidementpossible.

Jules Collin Modélisation algorithmique d’un troupeau de moutons

Page 5: Modélisation algorithmique d'un troupeau de moutons

Modélisation du troupeau et du chienDeux algorithmes de référence

Proposition d’un programme Python

Algorithme de Vaughan (2000)Algorithme de Bennett (2010)Comparaison des algorithmes

Un robot se déplace à l’intérieur d’une clôture circulaire afind’emmener les oies vers un point G situé sur le bord du cercle.Forces d’attraction et de répulsion proportionnelles à 1

r2.

Chaque oie i subit la force suivante :

−→Ri =

N∑n=1

K1(∥∥∥−−−→DiDn

∥∥∥+ L)2 ·

−−−→DiDn∥∥∥−−−→DiDn

∥∥∥ − K2 ·−−−→DiDn∥∥∥−−−→DiDn

∥∥∥3

− K3 ·

−−−→DiW∥∥∥−−−→DiW

∥∥∥3 − K4 ·−−→DiR∥∥∥−−→DiR∥∥∥3

Dn la position de l’oie n (1 ≤ n ≤ N), R est la position durobot, W la position du point le plus proche du mur etL,K1,K2,K3,K4 des constantes positives.

Jules Collin Modélisation algorithmique d’un troupeau de moutons

Page 6: Modélisation algorithmique d'un troupeau de moutons

Modélisation du troupeau et du chienDeux algorithmes de référence

Proposition d’un programme Python

Algorithme de Vaughan (2000)Algorithme de Bennett (2010)Comparaison des algorithmes

Le robot se déplace dans le cercle selon la formule suivante :

−→r = Kr1

∥∥∥−→GF∥∥∥ · −→RF∥∥∥−→RF∥∥∥ − Kr2 ·−→RG∥∥∥−→RG∥∥∥

G est la position finale voulue, F est le centre de masse des Nmoutons et Kr1 ,Kr2 sont des constantes positives.

Figure: Expérience originale de Vaughan (2000)Jules Collin Modélisation algorithmique d’un troupeau de moutons

Page 7: Modélisation algorithmique d'un troupeau de moutons

Modélisation du troupeau et du chienDeux algorithmes de référence

Proposition d’un programme Python

Algorithme de Vaughan (2000)Algorithme de Bennett (2010)Comparaison des algorithmes

Le chien calcule l’angle du mouton le plus éloigné et se déplacealors selon un arc de cercle dans sa direction, en contournantle troupeau.

Le changement du sens de rotation a lieu lorsque l’écart avecla direction des moutons est supérieur à un angle déterminé.

Le chien parcourt l’angle θ = 180◦ − | ̂( ~CD, ~CG )| pendant qu’il

récupère un mouton.D est la position du chien, C celle du centre de masse dutroupeau et G celle de l’objectif final.

Jules Collin Modélisation algorithmique d’un troupeau de moutons

Page 8: Modélisation algorithmique d'un troupeau de moutons

Modélisation du troupeau et du chienDeux algorithmes de référence

Proposition d’un programme Python

Algorithme de Vaughan (2000)Algorithme de Bennett (2010)Comparaison des algorithmes

Problème de Vaughan : aspect circulaire du modèle.Avantage de Bennett : angles parcourus plus petits ⇒ permetl’étude de troupeaux initialement dispersés.Vaughan ne termine que lorsque le rayon du cercle est inférieurà 10 m ⇒ pas transposable à un environnement ouvert.Pas de paramètres optimaux pour tous les algorithmes, nimême pour un seul algorithme

Jules Collin Modélisation algorithmique d’un troupeau de moutons

Page 9: Modélisation algorithmique d'un troupeau de moutons

Modélisation du troupeau et du chienDeux algorithmes de référence

Proposition d’un programme Python

Principe généralRencontre avec un bergerLe programmeOptimisationCalcul de la complexité

Réalisation d’un programme Python avec animation graphique.

Prise en compte des 4 formes d’attractions combinées avec descoefficients adaptés.Le programme complet dépend de 23 paramètres indépendants.

Jules Collin Modélisation algorithmique d’un troupeau de moutons

Page 10: Modélisation algorithmique d'un troupeau de moutons

Modélisation du troupeau et du chienDeux algorithmes de référence

Proposition d’un programme Python

Principe généralRencontre avec un bergerLe programmeOptimisationCalcul de la complexité

Etude sur un troupeau de 440 moutons.

Le Beauceron guide le troupeau à courte distance (2-3 mètres)Caméra embarquée sur le dos du chien.

Jules Collin Modélisation algorithmique d’un troupeau de moutons

Page 11: Modélisation algorithmique d'un troupeau de moutons

Modélisation du troupeau et du chienDeux algorithmes de référence

Proposition d’un programme Python

Principe généralRencontre avec un bergerLe programmeOptimisationCalcul de la complexité

Architecture du programme (511 lignes) :

InitialisationFonctions utilitairesImplémentation des 4 attractions et de la répulsionAlgorithmes de Jarvis et de Graham, au choix, et test pourdéterminer si un point est à l’intérieur de l’enveloppe convexeDéplacement du chien et des moutons (2 versions)Test d’arrivéeFonction de dessin permettant l’actualisation des positions

Jules Collin Modélisation algorithmique d’un troupeau de moutons

Page 12: Modélisation algorithmique d'un troupeau de moutons

Modélisation du troupeau et du chienDeux algorithmes de référence

Proposition d’un programme Python

Principe généralRencontre avec un bergerLe programmeOptimisationCalcul de la complexité

⇒ On établit un ordre de priorité des actions sur les moutons enplus des coefficients affectés aux interactions, en se penchantsur des observations réelles.Problème de l’incursion du chien au sein du troupeau.

⇒ Calcul de l’enveloppe convexe du troupeau avec l’algorithmede Jarvis (O

(N2)) ou Graham (O(N logN)).

Sortie du chien ~u =|det(

−→OC ,−−−→M1M2)|∥∥∥−−−→M1M2

∥∥∥ ·−→GB∥∥∥−→GB∥∥∥

Jules Collin Modélisation algorithmique d’un troupeau de moutons

Page 13: Modélisation algorithmique d'un troupeau de moutons

Modélisation du troupeau et du chienDeux algorithmes de référence

Proposition d’un programme Python

Principe généralRencontre avec un bergerLe programmeOptimisationCalcul de la complexité

⇒ Conditions d’exécution dans le déplacement du chien avec lafonction test_env .

((x1 − x2)yc + (y2 − y1)xc + x2y1 − x1y2)

× ((x1 − x2)yg + (y2 − y1)xg + x2y1 − x1y2) < 0

Problème de la durée d’exécution de chaque étape.⇒ Intégration native de fonctions coûteuses à travers la fonction

@jit du module numba.

Jules Collin Modélisation algorithmique d’un troupeau de moutons

Page 14: Modélisation algorithmique d'un troupeau de moutons

Modélisation du troupeau et du chienDeux algorithmes de référence

Proposition d’un programme Python

Principe généralRencontre avec un bergerLe programmeOptimisationCalcul de la complexité

Complexité O(N3) pour chaque appel récursif.

Etudes statistiques pour observer le temps d’exécution et lenombre d’étapes nécessaires, en faisant varier des paramètres,afin de déterminer une configuration la plus efficace possible.

Figure: Conditions du test

Jules Collin Modélisation algorithmique d’un troupeau de moutons

Page 15: Modélisation algorithmique d'un troupeau de moutons

Modélisation du troupeau et du chienDeux algorithmes de référence

Proposition d’un programme Python

Principe généralRencontre avec un bergerLe programmeOptimisationCalcul de la complexité

Exécution en un temps raisonnable tant que l’on ne dépassepas 200 moutons.Le nombre d’étapes également est une fonction croissante dunombre de moutons.

Figure: Nombre d’étapes et temps nécessaires à la complétion del’algorithme en fonction du nombre de moutons avec incertitudes

Jules Collin Modélisation algorithmique d’un troupeau de moutons

Page 16: Modélisation algorithmique d'un troupeau de moutons

Modélisation du troupeau et du chienDeux algorithmes de référence

Proposition d’un programme Python

Conclusion

⇒ Beaucoup de paramètres indépendants, une configurationoptimale est difficile à trouver.

⇒ On trouve cependant des paramètres efficaces qui permettentune réalisation en un temps correct et qui traduisent lesobservations recueillies sur le terrain.

⇒ On aurait pu prendre en compte l’inertie des moutons, qui lesempêcherait de changer de direction de façon trop abrupte.

Jules Collin Modélisation algorithmique d’un troupeau de moutons