Академический Документы
Профессиональный Документы
Культура Документы
22 mai 2017
Table des matières
Sujet 1
Méthode de tir simple
1.1 Introduction
Nous allons dans cette partie voir une méthode de résolution numérique d’un problème
simple de contrôle optimal utilisant les conditions nécessaires d’optimalité, c’est-à-dire le Prin-
cipe du Maximum de Pontryagin (PMP). Cette méthode fait partie des méthodes dites indirectes
et s’appelle la méthode de tir simple. Vous pouvez consulter la référence suivante pour une des-
cription des différentes méthodes numériques de résolution de problèmes de contrôle optimal :
A. V. Rao, A survey of numerical methods for optimal control.
1 tf
Z
J(u(·)) := u(t)2 dt −→ min
2 0
(P1) ẋ(t) = −x(t) + u(t), u(t) ∈ R, t ∈ [0 , tf ] p.p.,
x(0) = x0 , x(tf ) = xf ,
1
H(x, p, p0 , u) := p (−x + u) + p0 u2 ,
2
le pseudo-hamiltonien associé au problème (P1).
où [t] := (x(t), p(t), p0 , u(t)). Il n’y a pas d’anormale car si p0 = 0 alors p(·) ≡ 0 ce qui est
impossible. Ainsi, on a p0 < 0.
2 Sujet 1. Méthode de tir simple
0 = ∂u H[t].
us (x, p) = p (1.1)
le contrôle optimal.
L’inconnue de ce problème aux deux bouts est le vecteur adjoint initial p(0). En effet si l’on fixe
p(0) =: p0 alors d’après le théorème de Cauchy–Lipschitz, il existe une unique solution maximale
z(·) := (x(·), p(·)) vérifiant la dynamique (sur x et p) et la condition initiale z(0) = (x0 , p0 ). Le
problème est donc de trouver p0 tel que x(tf ) = xf .
S : R −→ R
(1.3)
y 7−→ S(y) := Πx (z(tf , x0 , y)) − xf ,
S(y) = 0. (1.4)
1.3. Implémentation Matlab de la méthode de tir simple 3
La méthode de tir simple consiste à résoudre les équations non linéaires (1.4). On utilise pour
cela une méthode de type Newton. Pour augmenter l’efficacité de l’algorithme, nous pouvons
fournir la jacobienne de la fonction de tir, cf. sujet 2.
Remarque 1.1. - Si p̄0 vérifie S(p̄0 ) = 0, alors la courbe intégrale z̄(·) solution de
→
−
l’équation différentielle ż(t) = H (z(t)), z(0) = (x0 , p̄0 ), avec le contrôle ū(·) := us (z̄(·)),
est une BC-extrémale du problème (P1), i.e. cette extrémale satisfait les conditions
nécessaires d’optimalité données par le PMP.
Or x(0) = x0 donc
x(t) = (0.5 p0 (e2 t − 1) + x0 ) e−t
2 (xf etf − x0 ) 2
p̄0 = 2 t = 2 ≈ 0.313.
e f −1 e −1
0.5 1.2
p0 = 0 p0 = 0
p0 = 0.4
1 p0 = 0.4
0 p0 = 0.313035 0.8 p0 = 0.313035
0.6
p
x
-0.5 0.4
0.2
-1 0
0 0.2 0.4 0.6 0.8 1 0 0.2 0.4 0.6 0.8 1
t t
1.2 3
p0 = 0
1 p0 = 0.4
2
0.8 p0 = 0.313035 1
0
0.6
S
u
-1
0.4
-2
0.2 -3
0
0 0.2 0.4 0.6 0.8 1 -3 -2 -1 0 1 2 3
t p0
0.5 1.2
p0 = 0 p0 = 0
p0 = 0.4
1 p0 = 0.4
0 p0 = 0.313035 0.8 p0 = 0.313035
0.6
p
x
-0.5 0.4
0.2
-1 0
0 0.2 0.4 0.6 0.8 1 0 0.2 0.4 0.6 0.8 1
t t
1
0.2
p0 = 0
0.8 p0 = 0.4 0
p0 = 0.313035
0.6
S -0.2
u
-0.4
0.4
-0.6
0.2
-0.8
0 -1
0 0.2 0.4 0.6 0.8 1 -3 -2 -1 0 1 2 3
t p0
Question 2. Expliquer pourquoi la méthode de tir ne converge pas pour y (0) = 1.5.
6 Sujet 1. Méthode de tir simple
2 5 8
p = (1,1) p = (1,1) p = (1,1)
0 0 6 0
1.5 p = (10,10) 4 p = (10,10) p = (10,10)
0 0 0
p0 = solution p0 = solution 4 p0 = solution
1 3
2
x1
x2
0.5 2 0
u
-2
0 1
-4
-0.5 0
-6
-1 -1 -8
0 0.2 0.4 0.6 0.8 1 0 0.2 0.4 0.6 0.8 1 0 0.2 0.4 0.6 0.8 1
t t t
14 10
p0 = (1,1) p0 = (1,1)
12 p0 = (10,10) p0 = (10,10)
p0 = solution 5 p0 = solution 10
10
||S||
5
p1
p2
0
6
4 0
-5 10 15
2
5 10
0 -10
0 0.2 0.4 0.6 0.8 1 0 0.2 0.4 0.6 0.8 1 p 0(2) 0 5 p 0(1)
t t
Remarque 1.3. - La loi de commande ū(·) associée à la solution des équations de tir est
lisse lorsque umax ≥ 6. Pour umax < 6, la loi de commande perd en régularité. Pour
umax = 5, elle est continue mais pas C 1 , seulement C 1 par morceaux (elle est même lisse
par morceaux).
Remarque 1.4. - On verra au sujet 4 des lois de commande qui ne sont pas continues,
mais toujours lisses par morceaux. Attention, dans ce cas là, nous n’utiliserons plus une
méthode de tir simple mais de tir multiple pour résoudre les équations de tir.
8 Sujet 2. Jacobienne de la fonction de tir simple
Sujet 2
Jacobienne de la fonction de tir simple
0.7 3
epsilon = 0.01 epsilon = 0.01
0.6 epsilon = 1 2.5 epsilon = 1
0.5
2
0.4
1.5
xε
pε
0.3
1
0.2
0.1 0.5
0 0
0 0.5 1 1.5 2 0 0.5 1 1.5 2
t t
1 0.5
epsilon = 0.01
epsilon = 1
0.8
0.6
Sε
0
uε
0.4
0.2
epsilon = 0.01
epsilon = 1
0 -0.5
0 0.5 1 1.5 2 0 0.5 1 1.5
t p0
L’application linéaire continue Tf,x , si elle existe est unique, et on l’appelle la différentielle de
Fréchet de f au point x.
Remarque 2.2. On utilisera la notation df (x) · h := Tf,x (h) ou f 0 (x) · h := Tf,x (h).
f (x + t h) − f (x)
df (x) · h = lim ,
t→0 t
d
t étant une variable réelle. Ainsi, df (x) · h est égal au vecteur vitesse dt f (x + t h)|t=0 , appelée
dérivée directionnelle de f en x dans la direction h.
10 Sujet 2. Jacobienne de la fonction de tir simple
Mn |t|n+1
|Rn (t)| ≤ ,
(n + 1)!
Formule des différences finies avants. La méthode des différences finies avants consiste à
approcher la différentielle de f en x dans la direction de h par la formule suivante :
où Lf est une borne de la valeur de g(·) sur le domaine d’intérêt. Ainsi, pour t > 0 petit, on a :
num(g, t) − num(g, 0) g(t) + e − g(0) − e
0 1 2 0
− g (0) = − g (0)
t t
R (t)
1 e1 − e2
= +
t t
M1 t θLf
≤ +2 =: φ(t).
2 t
La fonction φ atteint son minimum en la valeur
θLf
t̄ = 2 ,
M1
et si on suppose que le ratio Lf /M1 est d’un ordre de grandeur peu élevé, alors le choix suivant
pour t est presque optimal : √
t̄ = θ,
√
et on obtient ainsi une approximation de l’erreur totale φ(t̄) proportionnelle à θ.
2.3. Jacobienne de la fonction de tir 11
Formule des différences finies centrées. La méthode des différences finies centrées consiste
à approcher la différentielle de f en x dans la direction de h par la formule suivante :
f (x + t h) − f (x − t h) g(t) − g(−t) t2 t4
= = g 0 (0) + g (3) (0) + g (5) (0) + o(t4 ). (2.3)
2t t 3! 5!
On obtient ainsi une approximation de g 0 (0) = df (x) · h d’ordre 2 si g (3) (0) 6= 0 ou au moins
d’ordre 4 sinon.
Remarque 2.3. - Les différences finies centrées sont d’ordre plus élevé mais demandent
plus d’évaluations de la fonction f .
Question 3. Sachant que l’on commet une erreur numérique lors du calcul de g en un
point t, quel est le choix optimal pour t pour approcher la valeur de g 0 (0) par différences
finies centrées ? Quelle est alors la valeur de la borne de l’erreur totale ?
L’objectif dans un premier temps est de retrouver les résultats de la figure 2.2.
Finite
15
Jacobian of sfun
10
0
0 0.5 1 1.5
p0
IND
6
Jacobian of sfun
0
0 0.5 1 1.5
p0
EQ VAR
6
Jacobian of sfun
0
0 0.5 1 1.5
p0
Nous allons approcher par différence finie le deuxième membre de l’équation variationnelle
(2.5) 2 . On a alors, en notant z(t) := z(t, x0 , y),
→
− →
−
→
− H (z(t) + η δz(t)) − H (z(t))
d H (z(t)) · δz(t) ≈ ,
η
avec η > 0 petit. On peut prendre η de l’ordre de la racine carrée de l’epsilon machine.
Nous allons directement résoudre les équations variationnelles (2.5) pour calculer la jaco-
bienne de la fonction de tir. Pour cela, nous donnons pour p 6= 0,
Ñ é
ψ(p)
2ε 1− »
ψ(p)2 + 4 ε2
u0ε (p) = » 2 .
ψ(p) − 2 ε − ψ(p)2 + 4 ε2
Bien que la fonction ne soit pas définie pour p = 0, et donc non dérivable, on prendra dans le
code la même expression.
2. H.G. Bock. Numerical treatment of inverse problems in chemical reaction kinetics, in K. H. Hebert, P. Deu-
flhard, and W. Jager, editors, Modelling of chemical reaction systems, volume 18 of Springer series in Chem.
Phys., pages 102–125, 1981.
14 Sujet 2. Jacobienne de la fonction de tir simple
Remarque 2.6. - On peut voir sur la figure 2.3, le comportement de la fonction fsolve
de Matlab vis à vis de l’utilisation des différences finies pour le calcul approché de la
jacobienne. Par défaut, le pas est de l’ordre de la racine carrée de l’epsilon machine pour
les différences finies avants et de la racine cubique pour les différences centrées.
Figure 2.3 – Extrait de la documentation de Matlab sur les différences finies avec fsolve.
15
Sujet 3
Méthode de continuation discrète
On considère le problème de contrôle optimal (P4ε ). L’objectif est de retrouver les résultats
des figures 3.1 et 3.2 et de déterminer la structure de la solution lorsque ε → 0.
1 0.42
0.4
0.8
0.38
0.6 0.36
p0
0.34
ε
0.4 0.32
0.3
0.2
0.28
0 0.26
0 5 10 15 20 25 0 0.2 0.4 0.6 0.8 1
iteration ε
10 -6 4
Jε (uε )
3.5 J0 (uε )
10 -7 3
|Sε (p0 )|
2.5
10 -8
2
1.5
10 -9
1
10 -10 0.5
0 0.2 0.4 0.6 0.8 1 0 0.2 0.4 0.6 0.8 1
ε ε
0.5 3 1
epsilon = 1 epsilon = 1 epsilon = 1
epsilon = 0.5 epsilon = 0.5 epsilon = 0.5
0.45 epsilon = 0.100001 epsilon = 0.100001 0.9 epsilon = 0.100001
epsilon = 1e-06 epsilon = 1e-06 epsilon = 1e-06
2.5
0.4 0.8
0.35 0.7
2
0.3 0.6
uε
pε
0.2 0.4
1
0.15 0.3
0.1 0.2
0.5
0.05 0.1
0 0 0
0 0.5 1 1.5 2 0 0.5 1 1.5 2 0 0.5 1 1.5 2
t t t
Remarque 3.1. On note γ+ un arc tel que u(·) ≡ +1 tout au long de l’arc, γ− si
u(·) ≡ −1 et γ0 si u(·) ≡ 0. On note γ1 γ2 un arc γ1 suivi d’un arc γ2 .
Sujet 4
Méthode de tir multiple et contrôle bang-bang
On considère le problème de contrôle optimal (P4ε )|ε=0 . Dans ce cas, le contrôle optimal
possède une discontinuité et nous allons donc utiliser une méthode dite de tir multiple. On
introduit le paramètre iarc dans les fonctions control, hvfun, exphvfun et expcost qui cor-
respond à l’indice de l’arc courant. On notera y = (p0 , t1 , z1 ) l’inconnue de la fonction de tir, où
p0 est le vecteur adjoint initial, t1 est l’instant de transition entre l’arc 1 et l’arc 2 et où z1 est la
valeur de l’état et état adjoint à cet instant. La fonction de tir S : R4 → R4 aura une équation
permettant d’atteindre la cible xf , une équation permettant la commutation entre les arcs 1 et
2, et une dernière équation (dite de raccordement) assurant la continuité de l’état et de l’état
adjoint à l’instant t1 .
Remarque 4.1. Attention, les commandes expcost pour le calcul du coût et ssolve sont
déjà écrites !
Sujet 5
Méthodes de tir simple et multiple avec HamPath
Fortran routines
Spy,λq hλ pzq
Fortran core
AD AD AD
BS BS Ý
Ñ AD
By py,λq Bλ py, λq hλ pzq
Newton QR
T prpsqq Ý
Ñ
RK dhλ pzq
RK RK
Interface routines
ssolve hampath exphvfun expdhvfun
Interface Interface Interface Interface
1 tf
Z
J(u(·)) = u(t)2 dt −→ min
2 t0
ẋ(t) = v(t),
(P5) v̇(t) = −λv(t)2 + u(t), u(t) ∈ R, t ∈ [t0 , tf ] p.p.,
x(t0 ) = x0 , x(tf ) = xf ,
v(t0 ) = v0 , v(tf ) = vf ,
Le PMP nous donne le contrôle optimal (cf. listing 5.1) ū(z) := pv et l’on définit le hamil-
tonien maximisé (cf. listing 5.2) :
1
h(z) := H(z, p0 , ū(z)) = px v + pv (−λv 2 + ū(z)) + p0 ū2 (z), p0 = −1 (cas normal).
2
Subroutine c on t r ol ( t , n , z , i a r c , npar , par , u )
i m p l i c i t none
integer , intent ( in ) :: n , npar , i a r c
double p r e c i s i o n , intent ( in ) :: t
double p r e c i s i o n , d i m e n s i o n ( 2 ∗n ) , i n t e n t ( i n ) :: z
double p r e c i s i o n , d i m e n s i o n ( npar ) , i n t e n t ( i n ) :: par
double p r e c i s i o n , i n t e n t ( out ) :: u
u = z ( n+2) ! u = pv
end s u b r o u t i n e c o n t r o l
Listing 5.1 – afun.f90
S u b r o u t i n e hfun ( t , n , z , i a r c , npar , par , h )
i m p l i c i t none
integer , intent ( in ) :: n , npar , i a r c
double p r e c i s i o n , intent ( in ) :: t
d o u b l e p r e c i s i o n , d i m e n s i o n ( 2 ∗n ) , intent ( in ) :: z
d o u b l e p r e c i s i o n , d i m e n s i o n ( npar ) , intent ( in ) :: par
double p r e c i s i o n , i n t e n t ( out ) :: h
! Local d e c l a r a t i o n s
d o u b l e p r e c i s i o n : : x , v , px , pv , lambda , u
20 Sujet 5. Méthodes de tir simple et multiple avec HamPath
lambda = par ( 7 )
x = z ( 1) ; v = z ( 2)
px = z ( n+1) ; pv = z ( n+2)
c a l l c o n t r o l ( t , n , z , i a r c , npar , par , u )
end s u b r o u t i n e hfun
Listing 5.2 – hfun.f90
! local variables
d o u b l e p r e c i s i o n : : z0 ( 4 ) , z f ( 4 ) , t s p a n ( 2 )
integer : : n, iarc
n = 2 ! Dimension o f t h e s t a t e
t s p a n ( 1 ) = par ( 1 ) ! t0
t s p a n ( 2 ) = par ( 2 ) ! tf
z0 ( 1 ) = par ( 3 ) ! x0
z0 ( 2 ) = par ( 4 ) ! v0
z0 ( n+1) = y(1) ! px0
z0 ( n+2) = y(2) ! pv0
s (1) = z f ( 1 ) − par ( 5 ) ! x( t f ) − xf
s (2) = z f ( 2 ) − par ( 6 ) ! v( t f ) − vf
end s u b r o u t i n e s f u n
Listing 5.3 – Fonction de tir simple dans sfun.f90
5.2. Tir simple et HamPath 21
Fonction Description
Table 5.1 – Description des fonctions disponibles sous Matlab après compilation du problème
via la commande hampath. On a accès à l’aide depuis Matlab : » help ssolve.
5.2.2.3 Exercice
B Exercice 5.2. Retrouver les résultats des figures 3.1 et 3.2 avec HamPath.
22 Sujet 5. Méthodes de tir simple et multiple avec HamPath
Le PMP nous donne la structure de la solution : Bang-Bang avec deux arcs associés à h+
puis h− . Le rôle de la variable iarc dans les routines control et hfun est de choisir le contrôle
associé à l’arc courant, i.e. c’est l’indice de l’arc courant.
i f ( i a r c . eq . 1 ) then
u = 1d0
else ! iarc = 2
u = −1d0
end i f
Contrôle dans afun.f90
lambda = par ( 6 )
x = z ( 1) ; v = z ( 2)
px = z ( n+1) ; pv = z ( n+2)
c a l l c o n t r o l ( t , n , z , i a r c , npar , par , u )
h = px ∗ v + pv ∗ (−lambda ∗v∗ ∗2 + u )
Hamiltonien dans hfun.f90
5.3. Tir multiple et HamPath 23
! I n t e g r a t i o n on t h e f i r s t a r c : u = +1
iarc = 1 ; tspan = ( / t0 , t 1 / )
c a l l exphv ( tspan , n , z0 , i a r c , npar , par , expz0 )
! I n t e g r a t i o n on t h e s e c o n d a r c : u = −1
iarc = 2 ; tspan = ( / t1 , t f / )
c a l l exphv ( tspan , n , z1 , i a r c , npar , par , expz1 )
B Exercice 5.4. Retrouver les résultats avec HamPath de l’exercice 4.1 questions 5 et 6.
24 Sujet 6. Transfert orbital à temps minimal
Sujet 6
Transfert orbital à temps minimal
6.1 Introduction
Le système considéré est un satellite de masse fixé m libéré par une fusée dans le plan
de l’équateur ; l’orbite initiale du satellite est une ellipse de forte excentricité, voir figure 6.1.
L’objectif de ce travail est de réaliser le transfert en temps minimal de cette orbite elliptique à
une orbite circulaire géostationnaire.
4
x 10
5
trajectoire initiale
trajectoire finale
4
1
en km
−1
−2
−3
−4
−5
−6 −4 −2 0 2 4 6
en km 4
x 10
»
avec r(t) := x1 (t)2 + x2 (t)2 . Les unités choisies sont le kilomètre pour les distances et l’heure
pour les temps, cf. table 6.1.
Table 6.1 – Unité et valeurs des paramètres constants. Cette valeur de γmax correspond à une
60×36002
accélération de 60N et à une masse de 2000kg, cf. γmax = Fmax
m = 2000×103 = 388.8.
B Exercice 6.1. Calcul d’une BC-extrémale pour le problème (P7) avec HamPath.
1. Récupérer les sources du sujet 6. Vous pourrez utiliser le script orbite0f.m pour
l’affichage des trajectoires.
2. Résoudre la fonction de tir pour les conditions initiales :
Sujet 7
Rendu des TP-Projet
Vous déposerez sous Moodle (la date limite est indiquée sur la page Moodle du cours) une
archive contenant les codes et le rapport, sur la base des considérations données ci-après.
Les codes : Vous retournerez l’ensemble des codes, pour tous les sujets, en gardant la hiéarchie
de base des répertoires. Les scripts devront pouvoir être exécutés sans modification de la part
de l’enseignant afin de valider les exercices (seulement ceux présents dans le tableau 7.1).
Le rapport : Vous répondrez dans le rapport aux questions suivantes : 1 page 2 ; 2 page 5 ;
3 page 11 ; 4 page 16 ; 5 page 17 ; 6 page 17 ; 7 page 17 ; 8 page 25 ; 9 page 25 ; 10 page 25.
Vous complèterez dans votre rapport la colonne 3 (travail réalisé) du tableau 7.1. Vous
mettrez oui si vous estimez que vous avez réalisé le travail et que l’enseignant peut le valider à
l’aide du script associé, sans aucune modification de sa part. Sinon, vous mettrez non. Si par
exemple, vous estimez pour la question 6.1 avoir fait les figures mais que votre solution n’est
pas correcte, alors vous mettrez non dans la colonne 3.
Table 7.1 – Table d’évaluation des TP. Vous rendrez dans le rapport ce tableau avec la colonne
3 remplie par vos soins. Si vous n’êtes pas sûr, vous pouvez mettre un “ ?”.
Evaluation : Vous serez évalué sur les réponses aux questions et sur les validations des tests.