Optimisation de stratégie de golf - Ensiwiki

Transcription

Optimisation de stratégie de golf - Ensiwiki
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