Grenoble INP : ENSIMAG & G-SCOP Introduction à la Recherche en Laboratoire Optimisation de stratégie de golf Lucie Pansart 2A MMIS Tuteur : Gautier Stauffer Collaboration : Matthieu Guillot Février - Mai 2015 Table des matières 1 Introduction 3 1.1 Présentation du projet . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3 1.2 Intérêt du sujet . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3 1.3 Petit glossaire du golf . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4 1.4 Contexte pratique . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4 1.5 Revue de littérature . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5 2 Simulation d’un jeu de golf sur le green 6 3 Modélisation de la trajectoire de balle 8 3.1 3.2 Modèle de base . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8 3.1.1 Construction du modèle . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8 3.1.2 Implémentation OPL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11 3.1.3 Implémentation AMPL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12 Modèles . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13 3.2.1 Trajectoire théorique . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14 3.2.2 Trajectoire effective . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14 4 Capture d’une balle de golf 18 5 Stratégies à adopter 20 6 Conclusion 22 1 Avant-propos J’ai réalisé mon projet d’Introduction à la Recherche en Laboratoire au G-SCOP le laboratoire des Sciences pour la Conception, l’Optimisation et la Production de Grenoble. Ce choix était pour moi évident car c’est la Recherche Opérationnelle que je suis venue chercher à l’Ensimag et que je poursuivrai l’année prochaine grâce au parcours ROCO. Ce laboratoire de 13 ans travaille, grâce à près de 200 personnes, sur 6 domaines majeurs : — l’Optimisation Combinatoire — Recherche Opérationnelle et Système de Production — Gestion et Conduite des Systèmes de Production — Conception Collaborative — Conception Produit Process — Système d’information, conception robuste des produits Mon projet, « Optimisation de stratégie de golf » a été encadré par Gautier Stauffer au sein de l’équipe d’Optimisation Combinatoire. Ce sujet me convenait parfaitement puisqu’il s’agissait pour moi de comprendre les enjeux réels des outils de Recherche Opérationnelle vus en cours ainsi que d’explorer de nouvelles méthodes. Plus généralement j’avais également pour objectifs en réalisant le projet IRL de comprendre à la fois comment un laboratoire de recherche fonctionne et comment les chercheurs et doctorants travaillent quotidiennement afin de savoir si un parcours dans le monde de la recherche pouvait m’intéresser. 2 1. Introduction 1.1 Présentation du projet Le projet porte sur l’optimisation de stratégie de golf. Un golfeur veut faire un « trou » en donnant le moins de coups possible. On cherche donc à déterminer quelle est la meilleure stratégie, c’est-à-dire le meilleur point à viser à chaque itération pour atteindre le trou. Cela n’est pas trivial (la stratégie naïve de viser le trou n’est pas suffisante) car un joueur commet des erreurs par rapport au point qu’il vise. Un exemple simple est de considérer un joueur qui dévie toujours un peu à gauche. Il est alors intéressant pour lui de viser un point plus à droite du trou. Beaucoup d’autres facteurs rentrent en compte pour déterminer la meilleure stratégie et c’est ce que nous avons étudié dans ce projet. 1.2 Intérêt du sujet La Recherche Opérationnelle est un domaine des mathématiques très jeune et les sujets de recherche ne manquent pas. De nombreux algorithmes sont découverts assez fréquemment mais leur application et la vérification de leurs performances sont souvent plus longues à aboutir. D’autre part, l’étude des trajectoires est un champ qui a beaucoup d’applications. Nous l’étudions ici dans le contexte du jeu de golf mais les résultats pourront servir à tout autre problème impliquant des trajectoires. Le golf agit comme un prétexte pour pouvoir analyser et modéliser des trajectoires optimales, réaliser des recherches de plus courts chemins stochastiques et étudier la viabilité d’algorithmes connus sur des problèmes de dimensions importantes. L’appliquer au golf présente l’intérêt de pouvoir travailler sur des instances réelles, visualiser facilement des résultats et d’en tirer des conclusions pertinentes qui pourraient impacter la pratique de nombreux joueurs. De plus, Gautier Stauffer étant lui-même joueur de golf, son « expertise métier » apporte beaucoup de soutien dans la compréhension et la modélisation du problème. Un autre aspect important du choix du domaine d’application est l’abondance de données. L’augmentation importante des récoltes de données grâce aux nouvelles technologies nous permet de pouvoir vérifier les modèles générés sur des données récoltés à partir de jeux réels. Bien que nous 3 Figure 1.2 – Une représentation d’un trou en MATLAB Figure 1.1 – Un trou possible n’ayons pas eu le temps de les utiliser, le projet pourra être appliqué à ces données réelles, moyennant un traitement préliminaire. Un autre intérêt, évidemment, est de pouvoir mettre en pratique soi-même les résultats obtenus sur un parcours de golf ! 1.3 Petit glossaire du golf Pour pouvoir comprendre le sujet, il semble intéressant d’apporter quelques définitions. Le golf se joue sur des parcours de 9 ou 18 trous. Le but du joueur est de faire entrer la balle dans le trou (Hole) en moins de coups possibles. Un « trou » se décompose en plusieurs parties : — Le green est la zone autour du trou. L’herbe est rase et le joueur y fait rouler la balle grâce à des petits coups appelés putts. — Le fairway est le « chemin principal » pour atteindre le green. L’herbe est tondue et le joueur y fait des grands coups. — Le rough est une zone de jeu où l’herbe est plus haute que sur le fairway. Il peut être parsemé d’arbres. — Les obstacles d’eau. Notons qu’une balle tombée dans l’eau donne un point de pénalité au joueur. — Les bunkers, des zones de sable. Le putting est la technique de jeu sur le green. On y joue comme on jouerait au mini-golf : en faisant rouler doucement la balle vers le trou. Sur le green, le terrain n’est pas forcément plat. 1.4 Contexte pratique Le sujet étant très vaste, il a été séparé en 2 parties. Pendant que je travaillais sur la partie putting, Mathieu Guillot, étudiant en stage de fin de master, travaillait sur le chemin à parcourir pour atteindre le green. 4 On cherche donc à optimiser la stratégie de jeu sur le green pour atteindre le trou en un minimum de coups possibles. Pour réaliser ce projet il a fallu manipuler des outils d’optimisation (OPL, AMPL) et de programmation pour calcul scientifique (MATLAB). Nous verrons par la suite que les difficultés techniques nous ont empêché de venir au terme de ce que nous espérions au début. Cela fait partie des aléas que subissent les chercheurs et que j’ai découverts : au début d’un travail de recherche, on sait ce qu’on a. On a parfois une idée du résultat, parfois non. Ensuite le chemin pour parvenir à ce résultat est totalement inconnu, comme le sont le temps et les ressources qui seront effectivement nécessaires. 1.5 Revue de littérature Les premières recherches remontent au début des années 1990. Depuis, plusieurs travaux de recherches ont été effectués et portent sur la modélisation et l’optimisation des trajectoires[1], l’étude physique des greens [2] ainsi que sur la capture d’une balle de golf.[3] [4], notamment au bord du trou[5]. En partie 4 on étudie plus en détail la capture de la balle, sujet très étudié par A.R. Penner [6][7][8][9][10]. Ces travaux utilisent le golf comme un prétexte pour étudier des phénomènes complexes comme les problèmes aux limites([11]), l’optimisation avec contraintes non linéaires([1]) ou encore la vision par ordinateur dans le cas de détection de performance([12]). 5 2. Simulation d’un jeu de golf sur le green L’objectif général du projet était de fournir un outil permettant d’optimiser un jeu de golf, plus particulièrement de putting dans ce cas précis. Cet outil devait donc fournir la modélisation des trajectoires et le choix optimal pour atteindre le trou avec le moins de coups possibles étant donnés un certain green et un certain joueur. Pour obtenir la stratégie optimale, il faut d’abord pouvoir simuler les stratégies possibles. Cette simulation n’est pas triviale : il faut déterminer la vitesse optimale pour atteindre la cible (et rentrer dans le trou dans l’idéal). Cependant cela ne suffit pas : les joueurs font des erreurs et il faut donc prendre en compte ces erreurs pour déterminer quelle sera la trajectoire réellement effectuée par le joueur (on parlera de trajectoire effective). L’algorithme utilisé a été programmé en MATLAB. Le jeu est décomposé ainsi : Tant qe l’on n’est pas dans le trou faire : 1. Choisir le point cible 2. Définir la trajectoire théoriqe pour atteindre ce point 3. Définir la trajectoire effective selon les compétences du joueur 4. Définir le point d’arrivée effectif Pour implémenter cet algorithme, on définit des « objets » (des classes en MATLAB) : Une zone de green est définie par une certaine équation de terrain et par une grille de points discrétisant cette surface. Un joueur est défini par ses distributions de probabilité d’erreurs. Une stratégie est définie par un point cible (pour chaque point de départ) et est propre à chaque joueur. Par exemple, la stratégie naïve est de viser le trou. Un simulateur définit un jeu et est composé d’une zone de green, d’un joueur et d’une stratégie. Pour simuler le putting, on fait les hypothèses suivantes : 1. Si la balle roule sur le trou sans y rentrer, sa trajectoire n’est pas modifiée. 2. On considère que le trou est plat, c’est-à-dire qu’on ne prend pas en compte des écarts de hauteurs entre les bords du trou. 3. La stratégie ne change pas au cours du jeu. 4. Les erreurs du joueur suivent une distribution uniforme (cf. partie 3.2.2). 6 Certaines de ces hypothèses simplifient grandement le modèle mais sont validées par l’« expertise métier » car considérées comme cohérentes avec la réalité. L’étape 1 de l’algorithme, le choix du point à viser, est la partie concernée par l’optimisation stratégique et sera étudiée en 5. Les étapes 2 et 3 sont étudiées dans la partie 3 qui est consacrée à l’étude de la trajectoire de la balle. La dernière étape est en fait l’étude de la capture de la balle, réalisée en partie 4 puisque le point d’arrivée effectif est le résultat de la trajectoire effective sauf si la balle rentre dans le trou (par l’hypothèse 1). 7 3. Modélisation de la trajectoire de balle 3.1 Modèle de base 3.1.1 Construction du modèle Pour ce chapitre, ce sont les travaux de R. Vanderbei qui ont été très largement utilisés. Dans son article [1], il explique comment il parvient à un modèle cohérent pour simuler la trajectoire d’une balle de golf sur un green. Il se base sur les travaux d’Alessandrini pour répondre au problème suivant : « Étant donné une balle de golf au repos sur un green ayant une certaine éqation de surface, comment frapper la balle pour q’elle finisse avec la vitesse minimale au niveau du trou pour ainsi être capturée ? » On cherche la vitesse minimale pour espérer atteindre le point cible avec une vitesse nulle. Après de multiples améliorations sur des modèles pour lesquels aucun solver n’était capable de trouver une solution, Vanderbei a finalement été capable de trouver un modèle faisable par les solvers LOQO et SNOPT. Les éléments du modèles sont : Le pas de discrétisation N L’équation de surface : z = f (x, y) Le rayon du green R La vitesse v L’accélération a La masse de la balle m La force gravitationnelle g Les forces normales : Nz = Nx = − ∂z 2 ( ∂x ) mg ∂z 2 + ( ∂y ) +1 ∂z ∂z Ny = − ∂xNz ∂yNz Les forces frictionnelles : F = −µkN k où µ est un paramètre de friction. 8 v kvk (3.1) Les contraintes sont données par : L’équation de mouvement ma = N + F − mgez où ez est le vecteur canonique en z La règle du point médian qui implique : vx [j + 0.5] = ax [j] = x[j + 1] − x[j] T N vx [j + 0.5] − vx [j − 0.5] T N et identiquement pour y, vy , z et vz . On obtient le modèle suivant : 9 2 min (vxN −1 ) + (vyN −1 ) 2 sc : z t = f (xt , y t ) ∀t ∈ [0; N ] xt+1 − xt ∀t ∈ [0; N − 1] vxt+0.5 = T N vyt+0.5 = vzt+0.5 = y t+1 − y t z T N t+1 − zt T N vxt + vxi−1 2 t vy + vyi−1 vavgyt = 2 t + vzi−1 v z t vavgz = 2 t+0.5 t−0.5 v − v x atx = x T vavgxt = ∀t ∈ [0; N − 1] ∀t ∈ [0; N − 1] ∀t ∈ [1; N − 1] ∀t ∈ [1; N − 1] ∀t ∈ [1; N − 1] ∀t ∈ [1; N − 1] N aty = atz = Nzt = m t Nmag F rxt F ryt g− vyt+0.5 − vyt−0.5 T N vzt+0.5 − vzt−0.5 T N t t − aty ∂z + atz atx ∂z ∂x ∂y t2 ∂z t 2 + ∂z +1 ∂x ∂y ∂z t ∗ Nzt Nxt = − ∂x t ∂z Nyt = − ∗ Nzt ∂y t t g − atx ∂z − aty ∂z + atz ∂x ∂y =m q t2 ∂z t 2 + ∂z +1 ∂x ∂y t µ ∗ Nmag ∗ vavgx [i] = −q vavgxt 2 + vavgyt 2 + vavgzt 2 t µ ∗ Nmag ∗ vavgy [i] = −q vavgxt 2 + vavgyt 2 + vavgzt 2 t µ ∗ Nmag ∗ vavgz [i] F rzt = − q vavgxt 2 + vavgyt 2 + vavgzt 2 Nxt + F rxt m t N + F ryt y t ay = m atx = 10 ∀t ∈ [1; N − 1] ∀t ∈ [1; N − 1] 3.1.2 Implémentation OPL Nous avons décidé d’utiliser le logiciel CPLEX pour la résolution de ce modèle car le laboratoire disposait d’une licence pour ce logiciel. J’ai donc dû implémenter ce modèle en OPL (Optimization Programming Language) : int n float float float float float float = 50; g = 9.2; m = 0.01; x0 = 1; y0 = 2; xn = 1; yn = -2; // Average of derivative dexpr float vx_avg[i in 1..n-1] =(vx[i] + vx[i-1]) / 2; dexpr float vy_avg[i in 1..n-1] =(vy[i] + vy[i-1]) / 2; dexpr float vz_avg[i in 1..n-1] =(vz[i] + vz[i-1]) / 2; float mu = 0.07; dvar float T ; dexpr float speed[i in 1..n-1] = sqrt(vx_avg[i]^2 + vy_avg[i]^2 + vz_avg[i]^2); float y[i in 0..n] = (i/n) * yn + (1 - i/n) * y0; float x[ i in 0..n] = y[i]^2 / 2; // Force of friction dexpr float Frx[i in 1..n-1] = -mu * Nmag[i] * vx_avg[i] /speed[i]; dexpr float Fry[i in 1..n-1] = -mu * Nmag[i] * vy_avg[i] /speed[i]; dexpr float Frz[i in 1..n-1] = -mu * Nmag[i] * vz_avg[i] /speed[i]; dexpr float z[i in 0..n] = -0.3*atan(y[i]) + 0.05 * (x[i] + y[i]); dexpr float dzdx[i in 0..n] = 0.05; dexpr float dzdy[i in 0..n] = -0.3/(1 + y[i]^2) + 0.05; // v[i] denotes the derivative // at midpoint of the interval // i(T/n) to (i+1)(T/n) dvar float vx[0..n-1]; dvar float vy[0..n-1]; dvar float vz[0..n-1]; // Finalspeed minimize vx[n-1]^2 + vy[n-1]^2; subject to{ T >= 0; newt_x: forall( i in 1..n-1 ) ax[i] == (Nx[i] + Frx[i])/m; // a[i] denotes the acceleration // at midpoint of the interval // (i-0.5)(T/n) to (i+0.5)(T/n) dvar float ax[1..n-1]; newt_y: forall( i in 1..n-1 ) ay[i] == (Ny[i] + Fry[i])/m; xinit: x[0] == x0; yinit: y[0] == y0; dvar float ay[1..n-1]; dvar float az[1..n-1]; xfinal: x[n] == xn; yfinal: y[n] == yn; // Normal Force dexpr float Nz[i in 1..n-1] = m * (g - ax[i] * dzdx[i] - ay[i] * dzdy[i] + az[i]) /(dzdx[i]^2 + dzdy[i]^2 + 1); dexpr float Nx[i in 1..n-1] = -dzdx[i] * Nz[i]; dexpr float Ny[i in 1..n-1] = -dzdy[i] * Nz[i]; forall(i in 1..n-1){ T*vx[i] == (x[i+1]-x[i])*n; T*vy[i] == (y[i+1]-y[i])*n; T*vz[i] == (z[i+1]-z[i])*n; T*ax[i] == (vx[i]-vx[i-1])*n; T*ay[i] == (vy[i]-vy[i-1])*n; T*az[i] == (vz[i]-vz[i-1])*n; } // Normal magnitude dexpr float Nmag[i in 1..n-1] = m * (g - ax[i] * dzdx[i] - ay[i] * dzdy[i] + az[i]) /(sqrt(dzdx[i]^2 + dzdy[i]^2 + 1)); onthegreen: forall( i in 1..n-1) x[i]^2 + y[i]^2 <= 16; } Figure 3.1 – Modèle OPL 11 N.B. La surface considérée ici est d’équation z(x, y) = −0.3arctan(y) + 0.05(x + y) et le rayon est R = 4 Malheureusement OPL ne permettait pas de résoudre certaines non linéarités dans notre modèle. Nous avons donc dû nous rabattre sur un outil similaire mais donnant accès à plus de solveurs. 3.1.3 Implémentation AMPL Les résultats apportés par OPL n’étant pas exploitables et l’utilisation du logiciel par l’intermédiaire de MATLAB étant complexe, nous avons donc finalement décidé d’utiliser AMPL (A Mathematical Programming Language) pour résoudre le problème. Le problème s’écrit alors : param param param param param param param param n := 50; g := 9.8;y m := 0.01; x0 := 1; # Point de départ y0 := 2; xn := 1; # Point d’arrivée yn := -2; mu; var T >= 1e-6; # total time for the putt var x{0..n}; # coords of the traj var y{0..n}; var z {i in 0..n}= -0.3*atan(y[i]) + 0.05*(x[i]+y[i]); param dzdx{i in 0..n}:= 0.05; var dzdy{i in 0..n}= -0.3/(1+y[i]*y[i]) + 0.05; # v[i] denotes the deriv at midpt of # the interval i(T/n) to (i+1)(T/n). var vx{i in 0..n-1} = (x[i+1]-x[i])*n/T; var vy{i in 0..n-1} = (y[i+1]-y[i])*n/T; var vz{i in 0..n-1} = (z[i+1]-z[i])*n/T; # a[i] denotes the accel at the midpt of # the interval (i-0.5)(T/n) # to (i+0.5)(T/n), i.e. at i(T/n). var ax{i in 1..n-1} = (vx[i]-vx[i-1])*n/T; var ay{i in 1..n-1} = (vy[i]-vy[i-1])*n/T; var az{i in 1..n-1} = (vz[i]-vz[i-1])*n/T; var Nz{i in 1..n-1} = m*(g - ax[i]*dzdx[i] - ay[i]*dzdy[i] + az[i]) /(dzdx[i]*dzdx[i] + dzdy[i]*dzdy[i] + 1); var Nx{i in 1..n-1} = -dzdx[i]*Nz[i]; var Ny{i in 1..n-1} = -dzdy[i]*Nz[i]; var Nmag{i in 1..n-1} = m*(g - ax[i]*dzdx[i] - ay[i]*dzdy[i] + az[i]) /sqrt(dzdx[i]*dzdx[i] + dzdy[i]*dzdy[i] + 1); var = var = var = var = + + vx_avg{i in 1..n-1} (vx[i]+vx[i-1])/2; vy_avg{i in 1..n-1} (vy[i]+vy[i-1])/2; vz_avg{i in 1..n-1} (vz[i]+vz[i-1])/2; speed{i in 1..n-1} sqrt(vx_avg[i]*vx_avg[i] vy_avg[i]*vy_avg[i] vz_avg[i]*vz_avg[i]); var = var = var = Frx{i in 1..n-1} -mu*Nmag[i]*vx_avg[i]/speed[i]; Fry{i in 1..n-1} -mu*Nmag[i]*vy_avg[i]/speed[i]; Frz{i in 1..n-1} -mu*Nmag[i]*vz_avg[i]/speed[i]; minimize finalspeed: vx[n-1]*vx[n-1] + vy[n-1]*vy[n-1]; s.t. newt_x {i in 1..n-1}: ax[i] = (Nx[i] + Frx[i])/m; s.t. newt_y {i in 1..n-1}: ay[i] = (Ny[i] + Fry[i])/m; s.t. xinit: x[0] = x0; s.t. yinit: y[0] = y0; s.t. xfinal: x[n] = xn; s.t. yfinal: y[n] = yn; s.t. onthegreen {i in 0..n}: x[i]*x[i] + y[i]*y[i] <= 16; let T := 1.5; let mu := 0.07; # Solution initiale let {i in 0..n} y[i] := (i/n)*yn + (1-i/n)*y0; let {i in 0..n} x[i] := y[i]*y[i]/2; N.B. La surface considérée ici est d’équation z(x, y) = −0.3arctan(y) + 0.05(x + y) et le rayon est R = 4 Nous avons testé ce modèle sur de nombreux solveurs, notamment grâce à l’outil NEOS Online qui regroupe de nombreux solveurs gratuitement en ligne. Finalement nous avons gardé SNOPT 12 qui fournissait les résultats les plus cohérents. (a) Solution de Vanderbei (b) Solution de notre modèle (3D) (c) Solution de notre modèle Figure 3.2 – Validation de notre implémentation 3.2 Modèles Le modèle vérifié ci-dessus est un modèle particulier dont les données sont écrites en "dures" dans le programme AMPL. Or l’outil doit pouvoir fournir la possibilité de modifier certaines contraintes et notamment l’équation de surface et les conditions au bord. On utilise donc un fichier contenant la structure générale du programme mais sans les contraintes relatives au terrain ni les contraintes au bord. En effet, si on cherche la trajectoire optimale pour atteindre une certaine cible, les contraintes seront appliquées au point d’arrivée. En revanche, si on cherche la trajectoire effective, on ne connait pas le point d’arrivée mais des conditions initiales que nous étudierons juste après. On a donc une structure de modèle qui contient les contraintes de force normale (y compris sa magnitude), les contraintes de friction, les contraintes d’équation de mouvement et les contraintes imposées par la méthode du point médian. L’utilisateur en utilisant l’outil d’optimisation de stratégie de golf fournit alors au programme les contraintes de terrain (équation de la surface et dérivées). 13 Ensuite, selon le calcul que l’on cherche à effectuer (trajectoire théorique ou trajectoire effective), les contraintes au bord varient. 3.2.1 Trajectoire théorique On considère un point de départ (x0 , y0 ) et un point cible (xn , yn ) déterminé par la stratégie utilisée. On cherche à obtenir la trajectoire optimale et notamment la vitesse initiale que l’on va perturber ensuite par l’erreur du joueur pour calculer la trajectoire effective. On résout donc le problème semblable au modèle de Vanderbei (le modèle de base), c’est-à-dire avec les contraintes xfinal et yfinal, en changeant simplement les paramètres xn et yn. On utilise la solution fournie par Vanderbei pour initialiser le problème : let i in 0..n y[i] := (i/n)*yn + (1-i/n)*y0 ; let i in 0..nx[i] := y[i]*y[i]/2 ; On obtient de ce modèle une quantité d’informations importantes et notamment Le temps nécessaire pour atteindre le trou En chaque instant t : - Les coordonnées (x[t],y[t]) - Les vitesses selon les axes (vx[t],vy[t]) À partir de ces informations on obtient l’information voulue : la vitesse initiale pour atteindre le point cible. 3.2.2 Trajectoire effective On a donc résolu un problème qui nous donne la trajectoire, et donc a fortiori le coup, optimale pour atteindre le point cible. On cherche à déterminer quelle est la trajectoire que fera réellement la balle quand le joueur va putter, sachant qu’il fait une erreur sur son coup. Un coup étant défini par son vecteur de vitesse en x et en y, on a le vecteur optimal du coup ∗ ∗ optimal (vx1 , vy1 ) Angle et intensité de vitesse Un joueur effectue une certaine erreur définie par : une erreur angulaire δa une erreur d’intensité δd qui est définie par un pourcentage. On calcule : vy ∗ L’angle optimal du lancer α∗ = atan( vx1∗ ) q 1 ∗ L’intensité optimale au lancer v = (vx1 ∗ )2 + (vy1 ∗ )2 14 On considère alors que le joueur effectue une erreur de direction (erreur d’angle) et une erreur de puissance (erreur d’intensité). Ce sont ces erreurs au lancer qui déterminent l’erreur à l’arrivée par rapport au point visé. On définit alors : L’angle effectif qui est l’angle optimal, c’est-à-dire visé, auquel s’ajoute l’erreur du joueur : α ∼ U [α∗ − ∆α; α∗ + ∆α] où ∆α est une caractéristique intrinsèque au joueur. L’intensité effective qui est l’intensité optimale, c’est-à-dire visée, à laquelle s’ajoute l’erreur du joueur : d ∼ U [d∗ − ∆d ∗ d∗ ; d∗ + ∆D ∗ d∗ ] où ∆D ∈ [0; 1] est une caractéristique intrinsèque au joueur représentant le pourcentage d’erreur sur l’intensité. On considère ici des distributions uniformes centrées autour de l’optimum pour les erreurs de lancer mais toute distribution cohérente peut être utilisée. Par exemple un joueur peut viser plus souvent d’un côté que de l’autre auquel cas on peut utiliser une loi uniforme décalée à droite ou à gauche pour l’erreur angulaire. On a alors vx1 = cos(α) ∗ d vy1 = sin(α) ∗ d On ajoute donc au modèle support cette contrainte initiale sur la vitesse au lancer. On initialise le modèle avec la solution arbitraire (similaire à celle donnée par Vanderbei) : let i in 0..n y[i] := (1-i/n)*y0 ; let i in 0..nx[i] := y[i]*y[i]/2 ; La résolution de ce modèle donne la trajectoire effective et ainsi le point d’arrivée supposé (le vrai point d’arrivée est donné en partie 4). L’ensemble des réalisations des paramètres d’erreur permet de fournir une matrice de probabilité des cases atteintes, qui servira dans la partie 5. 15 Figure 3.3 – Distribution de probabilité sur la case d’arrivée d’un joueur La distribution uniforme des paramètres de déviation ne garantit en aucun cas une matrice de probabilité uniforme. Le terrain n’étant pas plat, certaines cases sont inaccessibles (par exemple en pente) et d’autres accessibles avec une grande probabilité (par exemple dans un creux). On a testé ce modèle avec une erreur angulaire nulle. La figure 3.4 montre les résultats obtenus. Ces résultats semblent cohérents. En effet, rappelons que le green est en pente : le point de départ se trouve en bas de la pente, le trou au sommet. On remarque sur la figure 3.4 que si le joueur tire moins fort que la vitesse de départ optimale (notons cette vitesse v1∗ ) alors il n’est pas capable d’atteindre le haut de la pente et ainsi le trou. Ceci est très logique car la vitesse de départ optimale est calculée pour que la vitesse d’arrivée soit minimale (notons cette vitesse vn∗ ). On peut supposer qu’avec une vitesse initiale plus faible la vitesse d’arrivée sera plus faible. Ainsi s’il existait une vitesse v1 < v1∗ telle que la trajectoire puisse atteindre le trou alors vn < vn∗ ce qui contredit la minimalité de vn∗ . Ainsi, si le joueur ne tire pas assez fort, la balle redescend la pente. Et plus il tire fort, plus il redescend la pente loin. Ces résultats semblent donc cohérents avec ce que l’on peut observer dans la réalité. Notons tout de même que le balle redescend beaucoup car le paramètre de friction ici est très faible (µ = 0.07). Sur un green, ce paramètre va varier entre 0.079 et 0.197 d’après Arthur P. Weber[2]. Malheureusement la structure du problème et la nature des contraintes engendrent parfois des solutions instables. Les solutions pour des erreurs supérieures à 0.05% ont donné des résultats inexploitables dans ce cadre. 16 (a) p=-45% (b) p=-35% (c) p=-25% (d) p=-15% (e) p=-10% (f) p=-5% (g) p=0% (h) p=5% Figure 3.4 – Évolution de la trajectoire selon l’erreur (pourcentage d’erreur sur l’intensité) 17 4. Capture d’une balle de golf Une fois qu’on a la trajectoire réellement effectuée il faut savoir si la balle est capturée par le trou. On se base sur les travaux de A.R. Penner qui a publié 5 articles sur la physique du golf : [6],[7],[8],[9] et [10]. Lui-même se base sur les travaux de Brian W. Holmes [4]. Nous utilisons plus particulièrement l’article [10] pour modéliser la capture de la balle. Dans cet article, A.R. Penner explique que plus la balle se trouve loin du centre du trou plus la vitesse doit être faible pour que la balle soit effectivement capturée. Il définit la fonction suivante : vc (δ) = 1.63m/s − (1.63m/s) δ RH 2 (4.1) où δ est la distance du centre de la balle au centre du trou et RH le rayon du trou. Cette fonction est une approximation de la borne de l’espace de capture. Pour que la balle soit capturée, il faut que sa vitesse d’impact soit inférieure à vc (δ). Figure 4.1 – Espace de capture en fonction du paramètre d’impact δ et son approximation donnée en (4.1) La figure 4.1 montre la variation de vitesse d’impact limite pour la capture. On remarque bien que si la balle est exactement au centre du trou alors δ = 0 et la vitesse limite pour que la balle soit 18 capturée est maximale. De même si le centre de gravité de la balle est en dehors du trou alors la balle ne peut pas être capturée. Dans notre cas, la balle de golf est capturée à l’instant t = 42 (sachant que la discrétisation fait varier t ∈ J0; 50K) comme le montre la figure 4.2 (a) À l’instant t=41 (b) À l’instant t=42 Figure 4.2 – Capture de la balle de golf 19 5. Stratégies à adopter Jusqu’à présent, le travail effectué a porté sur la modélisation du jeu de golf. Le programme d’optimisation donnant les conditions de départ optimales pour atteindre le trou n’est pas suffisant pour optimiser la stratégie entière du joueur. Figure 5.1 – Vue en coupe de la structure du green pris comme exemple En effet, prenons l’exemple précédent : le green est en pente, le point de départ est en bas de la pente, le trou en haut au « bord » du plateau (cf figure 5.1 pour visualiser la situation). Pour atteindre le trou, il faut idéalement avoir une certaine vitesse au départ. Cependant, le joueur effectue une erreur sur cette vitesse. Considérons une erreur uniforme. Le joueur a alors 50% de risques de tirer moins fort que ce qui est nécessaire pour atteindre le trou, et a fortiori pour atteindre le sommet de la pente. Ainsi le joueur a 50% de risques de redescendre la pente et son espérance de nombre de coups sera plus élevée que s’il tire plus fort, quitte à dépasser le trou, pour atteindre le plateau. On remarque donc que le joueur a intérêt à viser plus loin que le trou. La question est de savoir à quelle distance pour minimiser son nombre de coups. Cet exemple illustre la motivation de complexifier le modèle : on ne cherche pas simplement à maximiser nos chances de rentrer dans le trou mais, comme le joueur se trompe, on cherche à minimiser l’espérance du nombre de coups nécessaires pour atteindre le trou. Nous n’avons malheureusement pas eu le temps d’atteindre cette partie-là du projet. L’idée initiale était d’utiliser des méthodes de recherche de plus courts chemins stochastiques. On peut modéliser le problème sous forme de graphe (cf figure 5.2) : On a l’ensemble des états S où un état s est une case du green. Pour chaque case on a un ensemble d’actions A où une action a est « viser case s » Entre chaque couple (état s, action a) et chaque état s0 on a un arc pondéré par la probabilité d’atteindre s0 à partir de s en jouant a. 20 Figure 5.2 – Graphe modélisant le problème du plus court chemin stochastique On cherche donc le plus court chemin de (x0 , y0 ) à (xhole , yhole ) dans ce graphe stochastique. Le matrice d’incidence de ce graphe est déterminée par le modèle présenté précédemment : pour chaque case du green on détermine grâce au simulateur la probabilité d’arriver sur chacune des cases du green en fonction de l’erreur du joueur (et de la nature du green (surface, force de friction...)). Une fois que l’on a cette matrice d’incidence, l’objectif est de pouvoir utiliser des modèles existants comme le processus de décision Markovien. L’enjeu du projet était, et sera pour ceux qui reprendront la suite, de déterminer si la taille du problème peut s’adapter à ce genre d’algorithme. En effet, on a une matrice de taille n3 = nombre d’états départ (n) × nombre d’actions possibles (n) × nombre d’états arrivée (n) où n est le nombre de case du green discrétisé. Il faut déterminer l’arbitrage à faire entre la précision et le temps de calcul pour rendre l’outil intéressant et utilisable. 21 6. Conclusion J’ai beaucoup apprécié ce projet. Le sujet était très intéressant et nous avons même pu mettre en pratique nos résultats sur un terrain de golf ! J’ai été étonnée par la complexité du sujet et le temps qu’il a fallu pour arriver à des premiers résultats. Comme cela peut être le cas en entreprise, les outils ont été un frein à la bonne progression au début du projet. Ainsi je suis un peu déçue de n’avoir fait qu’effleurer l’optimisation stratégique. Cependant cela m’a montré les motivations pour l’optimisation stochastique et je pourrai découvrir les méthodes associées au semestre prochain. Au-delà de l’aspect projet, j’ai découvert la vie en laboratoire. J’ai pu assister à plusieurs séminaires très intéressants et je tiens à remercier mon tuteur Gautier Stauffer pour ces occasions. J’ai appris qu’un chercheur doit être très polyvalent. J’ai eu beaucoup de physique dans mon projet et c’est notamment sur ce sujet que j’ai pu être ralentie. Un aspect terre-à-terre de ce que j’ai découvert est qu’il faut être très bon en anglais. Tous les articles que j’ai pu lire étaient en anglais. J’ai donc pu améliorer mon anglais technique et me rendre compte qu’il est vraiment essentiel pour des travaux de recherches et pour discuter avec les nombreux chercheurs et doctorants étrangers au laboratoire. Je remercie Gautier Stauffer et Matthieu Guillot pour m’avoir accompagnée sur ce projet. J’ai pu utiliser des outils de recherche opérationnelle que je n’ai pas encore eu l’occasion de découvrir en cours et appliquer des méthodologies étudiées à un cas pratique. J’ai aussi confirmé mon envie de continuer dans la recherche opérationnelle l’année prochaine. Finalement, ayant pu discuter avec d’autres personne au laboratoire, je peux aujourd’hui envisager l’idée de faire une thèse et de la recherche plus tard, ce qui remplit un des objectifs principaux de ma démarche initiale. 22 Bibliographie [1] Robert J. Vanderbei. Case studies in trajectory optimization : trains, planes, and other pastimes. Princeton University, 2000. [2] Arthur R Weber. Green speed physics the laws of physics applied to golf course maintenance practices. USGA Green Section Record, 1997. [3] Matulya Bansal and Mark Broadie. A simulation model to analyze the impact of hole size on putting in golf. In Proceedings of the 40th Conference on Winter Simulation, WSC ’08, pages 2826–2834. Winter Simulation Conference, 2008. [4] B. W. Holmes. Putting : How a golf ball and hole interact. American Journal of Physics, 59 :129– 136, 1991. [5] M. Hubbard and T. Smith. Dynamics of golf ballhole interactions : Rolling around the rim. Transactions of the ASME, 121 :88–95, 1999. [6] A.R. Penner. The physics of golf : The optimum loft of a driver. American Journal of Physics, 69 :563–568, 2001. [7] A.R. Penner. The physics of golf : The convex face of a driver. American Journal of Physics, 69 :1073–1081, 2001. [8] A.R. Penner. The physics of golf. Reports On Progress In Physics, 66 :131–171, 2003. [9] A.R. Penner. The run of a golf ball. Canadian Journal of Physics, 80 :931–940, 2002. [10] A.R. Penner. The physics of putting. Canadian Journal of Physics, 80 :83–96, 2002. [11] Stephen M. Alessandrini. Motivational example for the numerical solution of two-point boundary-value problems. SIAM Rev., 37(3) :423–427, 1995. [12] Micael S. Couceiro, David Portugal, Nuno Goncçalves, Rui Rocha, J. Miguel Luz, Carlos M. Figueiredo, and Gonçalo Dias. A methodology for detection and estimation in the analysis of golf putting. Pattern Anal. Appl., 16(3) :459–474, 2013. 23
© Copyright 2024