ODDI_01-12-2024
ODDI_01-12-2024
ODDI_01-12-2024
M1 ERO (2024=2025)
Plan du cours
Introduction
1 Exemples introductifs.
5 Conclusion.
6 Annexes.
Références
[1] R. Faure, B. Lemaire, C. Picouleau. "Précis de recherche opérationnelle : Méthodes et exercices
d’application" - Masters, écoles d’ingénieurs. Editeur : Dunod, 08/07/2009 (6e édition).
Introduction.
La Recherche opérationnelle propose des méthodes scienti…ques pour l’application des méthodes
scienti…ques à la résolution des problèmes de gestion a…n d’aider à la prise de meilleures décisions.
L’idée est de développer et d’utiliser des outils mathématiques et informatiques pour maîtriser
les problèmes complexes. La recherche opérationnelle se présente comme une "boîte à outils",
un ensemble d’"objets" qu’il faut savoir combiner a…n de modéliser puis résoudre un problème
concret. Un de ses outils fondamentaux est la programmation dynamique.
En 1944, Pierre MASSÉ1 utilisait une méthode pour plani…er les investissements d’électricité de
France. Cette méthode n’a pas eu l’intérêt qu’elle méritait à cette époque, malgré son e¢ cacité en
optimisation, vue la relation étroite qu’elle présentait avec l’économie. Le célèbre mathématicien
américain Richard BELLMAN2 fût le premier, à formuler son principe d’optimalité le cœur de
cette méthode, à savoir
Il la désigna par la programmation dynamique 3 pour la première fois dans les années 1940.
Le terme programmation dynamique peut paraître un peu étrange et est maintenant parfois utilisé
dans un autre sens ; il repose sur le fait que les di¤érentes valeurs sont mises à jour dynamiquement.
La programmation dynamique n’est pas un algorithme, mais plutôt une technique algorithmique
exacte qui permet de résoudre une catégorie particulière de problèmes d’optimisation. Elle se
caractérise par une méthode de résolution, appliquant le principe d’optimalité, Aussi, l’adjectif
"dynamique", qui donne une image avantageuse de cette technique, s’explique par le fait qu’il
s’agit d’une méthode d’optimisation applicable pour des problèmes possédant une structure dite
de décomposabilité (somme de fonctions monotones non décroissantes) nécessitant une séquence
de décisions corrélées entre elles. Chaque décision transforme la situation actuelle en une nouvelle
situation. Une séquence de décisions, qui dans un ordre produit une séquence de situations, est à
établir pour optimiser une certaine valeur4 . Notons que l’algorithme de Bellman, appliqué pour
la recherche des chemins optimaux dans des graphes orientés sans circuit, est un de ses algorithmes.
La programmation dynamique est séduisante de son formalisme assez générique, ce qui laisse
libre cours à de multiples variantes et à la résolution de problèmes assez variés, qu’ils soient
déterministes ou non. Cependant, seuls les problèmes d’optimisations séquentielles sont concernées
et la véri…cation de l’applicabilité du principe d’optimalité est indispensable avant tout appel de
cette méthode. La di¢ culté réside dans la caractérisation des problèmes susceptibles d’être traités
par cette méthode. Aussi, la programmation dynamique s’applique pour certains problèmes, où
le temps n’intervient pas explicitement, mais il est nécessaire pour cela qu’on puisse - d’une manière
plus ou moins arti…cielle - les décomposer en étapes.
1
P. Massé. Le choix des investissements. Dunod, Paris, 1959.
2
J.C. Culioli (article dans la Recherche 2003), raconte que R. Bellman, alors chercheur à la Rand Corporation,
devait rendre des comptes au secrétaire à la Défense de l’époque qui ne supportait ni le mot “recherche”, ni le
mot “mathématiques”; Richard Bellmann a alors choisi ce nom dans un souci de “marketing”: il lui a semblé que
l’utilisation des termes “programmation” et “dynamique” donnait à son travail une apparence qui plairait à son
supérieur.
3
Le terme et le concept ont été introduits pour résoudre des problèmes d’a¤ectation et d’optimisation (recherche
opérationnelle) dans les années 50.
4
La valeur d’une séquence de décisions est généralement égale à la somme des valeurs des décisions et situations
séparément dans la séquence.
1 Exemples introductifs.
Nous commençons cette section par introduire, à travers des exemples, les idées essentielles de
la programmation dynamique (retrouvées sous une forme plus générale, dans la prochaine section).
n = 5 et k = 3.
2
Remarquez, dans l’arbre ci-contre le nombre de fois, par exemple que le terme noté 2,1 ,
1
est calculé.
m 0 1 2 3 4 5 6 7 8
v1 = 1 0 1 2 3 4 5 6 7 8
" " "
v2 = 4 0 1 2 3 1 2 3 4 2
v3 = 6 0 1 2 3 1 2 1 2 2
T (i; j) : "étant donnés les i premiers objets, il existe un sous-ensemble de ces i éléments de poids j":
Ainsi, on remplit un tableau A ligne par ligne, qui contient les valeurs de T , dont les colonnes
(resp. les lignes) sont indexées par j (resp. i).
On représente la valeur "vrai" (resp. "faux ") par V (resp. F ).
Le problème de la partition admet une solution, si et seulement si A(n; p) vaut V .
Pour le remplissage de A :
- La première ligne de A (i = 1), correspondant à l’examen de a1 , est très facile à remplir.
En e¤et, les seuls éléments valant V correspondent à j = 0 et j = p(a1 ).
- Le passage d’une ligne à la suivante, se fait grâce aux formules récurrentes suivantes :
En fait, nous avons énuméré tous les V de la ligne i. Autrement dit, on a les relations récurrentes:
À l’aide du tableau, on peut aussi reconstituer un choix possible pour la partition de l’ensemble
initial en deux sous-ensembles. En e¤et, on peut considérer que la valeur V de A(6; 16) provient de
celle de A(4; 16) (on ne prend donc ni l’objet 5 de poids 2, ni l’objet 6 de poids 5), qui provenait de
A(3; 8) (on prend l’objet 4 de poids 8), dont la valeur V provenait à son tour de A(2; 5) (on prend
l’objet 3 de poids 3), issue de A(1; 5) (ce qui amène à prendre en…n l’objet 1 de poids 5 mais
pas l’objet 2 de poids 9). La partition est donc possible avec les objets 1; 3 et 4, ou encore,
par complémentarité, à l’aide des objets 2; 5 et 6 (d’autres choix seraient aussi possible).
On suppose que tous les coe¢ cients uj et vj sont des entiers strictement positifs.
En fait, on peut considérer (P ) comme étant un cas particulier de la famille des problèmes
(Pk;v ) 1 k n (notés ci-dessus), dé…nis pour 1 k n et 0 v M . On a en e¤et (P ) = (Pn;M ).
0 v M
Le plongement étant réalisé, il nous reste à trouver les relations de récurrence permettant de
résoudre les problèmes (Pk;v ) de proche en proche.
Notons par zk;v le maximum de (Pk;v ). En posant z0;v = 0, 0 v M , il vient :
v
zk;v = max fzk 1;v vk :xk + uk xk g ; où Xk = xk xk 2 N et 0 xk :
xk 2Xk vk
En e¤et, Xk contient toutes les valeurs possibles de xk . Une valeur de Xk étant attribuée à xk , on
peut considérer que zk;v est la somme de l’utilité associée en propre à xk , c’est-à-dire uk xk , et de
l’utilité maximum apportée par les k 1 autres variables pour un volume égal au volume laissé
libre par le choix de xk , à savoir v vk xk ; d’où le terme entre accolades dans l’expression de zk;v ,
v
0 xk . Ceci étant vrai pour toute valeur attribuée à xk , on prendra pour zk;v le maximum
vk
de ces termes quand xk décrit Xk .
On suppose que tous les coe¢ cients aj (j = 1; n) sont entiers positifs et b un entier. Ainsi, le second
membre b doit être entier positif. Les coe¢ cients cj (j = 1; n) peuvent être des réels quelconques.
On notera, F la valeur optimale de (KP ), i.e
P
n
F =8 max 9 cj xj :
< P
n =j=1
x aj xj b et x2f0;1gn
: ;
j=1
2. On cherche une relation de récurrence reliant entre les valeurs optimales de ces di¤érents problèmes.
Ceci revient à l’écriture de l’équation fonctionnelle reliant ces di¤érents problèmes. On a :
8 9
>
> >
>
> ( )>
>
>
P
n < P
n =
8 max 9 cj xj () max c1 x1 + 8 max 9 cj xj
< P n =j=1 x1 2f0;1g >
> < P n = j=2 >
>
x aj xj b et x2f0;1gn >
> x0 aj xj b a1 x1 et x0 2f0;1gn 1 >
>
: ; : : ; ;
j=1 j=2
P
n
Si on note F1 (0) = 8 max 9 cj xj , alors
< P
n =j=1
x aj xj b et x2f0;1gn
: ;
j=1
Ainsi, dans le cas de la famille (KPi (E))1 i n, on obtient aisément la relation de récurrence
Fi (E) = max fci xi + Fi+1 (E + ai xi )g
xi 2f0;1g
et pour l’étape n
0 si Fn (E) = 0,
xn (E) =
1 si Fn (E) = cn
Une solution optimale x sera alors obtenue à la …n de Algorithme 1 par la procédure
Procédure 1.
(a) E 0,
(b) Pour i = 1; 2; :::; n successivement, faire
xi xi (E)
E E + ai x i
On voit que cette méthode nécessite le stockage d’un volume important d’informations, à savoir
les n(b + 1) quantités xi (E).
Exemple/Exercice.
8
> PN
>
< max Z = cj xj
j=1
On considère le problème de sac à dos (P ) xj 2 f0; 1g; 8j = 1; N
>
> PN
: aj x j b
j=1
(aj et b entiers (strictement) positifs).
1) Écrire l’équation fonctionnelle relative à la résolution de ce problème par la programmation
dynamique.
2) Résoudre l’exemple numérique suivant :
max Z = 2 x1 + x2 + 3 x3
(P ) xj 2 f0; 1g; 8j = 1; 3
2 x1 + 3 x2 + x3 5
Solution de l’Exemple/Exercice.
1) Pour k 2 [1; N ] \ N; E 2 [0; b] \ N, on considère la séquence de problèmes (Pk;E ) k2[1;N ]\N , où
E2[0;b]\N
8
>
> P
N
>
< max Z = cj xj
j=k
(Pk;E ) xj 2 f0; 1g; 8j = k; N
>
> PN
>
: aj x j b E
j=k
L’équation fonctionnelle :
On a b a3 = 5 1 = 4 et c3 = 3 > 0
3 pour E 2 [0; 4]
F3 (E) = E2N
0 pour E > 4
Procédure 1.
(a) E 0
(b) x1 = x1 (0) = 1; E 0 + a1 x 1 = 2
x2 = x2 (2) = 0; E 2 + a2 x 2 = 2
x3 = x3 (2) = 1.
8
> P
k
>
< max Z = cj xj
j=1
(Pk;E ) xj 2 f0; 1g; 8j = 1; k
>
> Pk
: aj x j E
j=1
8
< E
c1 si 1 (pour x1 = 1)
Pour i = 1 F1 (E) = a1 E2N
: 0 sinon
8
< Fk (E) = maxfF 1 (E); ci + Fk 1 (E ak )g; pour 0 < E b; E 2 N
| k {z } | {z }
Pour k 2 (2 k n) xk =0 xk =1
:
F3 (b) = F
Application numérique :
? D’autre part, à toute paire de sommets de la forme f(0; 0); (E; 1)g, on associe un arc [(0; 0); (E; 1)]
de longueur 0 si E = 0 ;
? En…n, pour i = 1; 2; :::; n 1, à toute paire de sommets de la forme: f(E; i); (E 0 ; i + 1)g,
on associe un arc [(E; i); (E 0 ; i + 1)]
de longueur 0 si E 0 = E ;
de longueur ci+1 si E 0 = E + ai+1 et que 0 E + ai+1 b;
Le sous-ensemble Xt des sommets de la forme (E; n), pour 0 E b, est appelé l’ensemble
des sommets (des états) terminaux.
Exemple. Soit le problème (KP ) dont la …gure ci-dessous illustre la conception de la solution.
8
< max Z = 2 x1 + 3 x2 + 6 x3
(KP ) 3 x1 + 2 x2 + 4 x3 5
:
xj 2 f0; 1g; 8j = 1; 3
Figure 1
Figure 2
Bien sûr, tout cela est fondé sur la connaissance des deux nombres SC et SD qui, malheureusement
ne sont pas connus. Toutefois, l’une des deux principales idées de la programmation dynamique
a été déjà faite en ses ino¤ensives apparences. C’est le constat que seuls les meilleurs des e¤orts
le long des chemins de C et D à B doivent être calculés. C’est l’interprétation propre du principe
d’optimalité
Ayant dé…ni SC et SD comme ci-dessus, on peut citer le principe d’optimalité comme preuve de
la formule suivante
1 + SC
SA = min ;
0 + SD
où SA est l’e¤ort minimum pour aller de A vers B. Maintenant pour la seconde principale idée
du choix de la programmation dynamique est qu’initialement les deux nombres SC et SD sont
inconnues. Nous pouvons calculer SC , si nous connaissions les deux nombres SE et SF (le minimum
d’e¤orts de E et F à B, respectivement), en invoquant le principe de l’optimalité
5 + SE
SC = min :
4 + SF
De même
7 + SF
SD = min :
3 + SG
SE , SF et SG sont initialement inconnus, mais peuvent être calculés si SH , SI , SJ et SK étaient
disponibles. Ces nombres à leur tour dépendent de SL , SM , et SN , qui dépendent aussi de SO
et SP . Ainsi, on utilise les formules ci-dessus pour calculer tous les S, si on connait SO et SP ,
les e¤orts minimum de O et P , respectivement, puisque il existe un seul arc de O et P vers B.
En procédant par une marche-arrière de O et P vers A, on obtient:
SO = 2 SP = 1
2 + SO
S L = 5 + SO = 7 SM = min =4 SN = 4 + SP = 5
8 + SP
3 + SL 2 + SM
SH = 3 + SL = 10 SI = min =8 SJ = min = 6 SK = 2 + SN = 7
4 + SM 2 + SN
2 + SH 1 + SI 5 + SJ
SE = min = 9 SF = min = 8 SG = min = 11
1 + SI 2 + SJ 4 + SK
5 + SE 7 + SF
SC = min = 12 SD = min = 14
4 + SF 3 + SG
1 + SC
SA = min = 13
0 + SD
5
Le nombre d’opérations élémentaires (additions, comparaisons, ...) nécessaires, en fonction du volume de
mémoire exigé par la mise en œuvre sur calculateur
6
Un problème est dit pseudo-polynomial s’il existe un algorithme (dit aussi pseudo-polynomial ) dont la complexité
est bornée par un polynôme en fonction de la place mémoire occupée par les données, en acceptant cette fois-ci de
coder les quantités numériques en unaire (il faut autant de symboles que la valeur de l’entier à coder ; un codage
non raisonnable). Aussi, un problème N P -complet qui n’est pas pseudo-polynomial est dit fortement N P -complet
(un problème de décision associé au problème du voyageur de commerce).
où f est une fonction réelle de la variable réelle x et des k variables réelles y1 ; y2 ; :::; yk .
Supposons que f est séparable en deux fonctions f1 et f2 , c’est-à-dire f s’écrit sous la forme
Une condition su¢ sante (mais cependant très générale) pour que la relation (1) soit véri…ée a été
donnée par Mitten (1964) et fait intervenir la notion de fonction décomposable.
Dé…nition. On dit que f est décomposable en f1 et f2 si f est séparable (f (x; y) = f1 (x; f2 (y))),
et si, de plus, la fonction f1 est monotone non décroissante par rapport à son deuxième argu-
ment.
On peut alors énoncer le résultat fondamental suivant :
Théorème (Théorème d’optimalité). Soit f une fonction réelle en x et y = (y1 ; y2 ; :::; yk ).
Si f est décomposable, avec f (x; y) = f1 (x; f2 (y)), alors on a :
Opt f (x; y)
où Opt = min ou max ,
(x; y) 2
+1 si x = ; et Opt = min
Opt ff2 (y)g =
y2 x
1 si x = ; et Opt = max
on peut énoncer :
Théorème 2 (Théorème d’optimalité: cas avec contraintes). Si f est décomposable avec
f (x; y) = f1 (x; f2 (y)), alors
Opt f (x; y)
(x; y) 2
D’un point de vue pratique, si l’on suppose que l’ensemble des solutions est a priori quelconque,
la recherche de l’optimum de f sur par la formule de décomposition (2)
est équivalente à :
- déterminer pour chaque x la valeur de la fonction ' :
Ainsi, on remarque que ceci est équivalent au calcul du minimum de f (x; y) par "énumération"
de tous les (x; y) 2 . La formule (2’) ne fait que préciser l’ordre dans lequel s’e¤ectue cette
"énumération". Il est claire qu’une telle procédure ne peut conduire à une méthode de résolution
e¢ cace en pratique.
En fait, l’intérêt du théorème d’optimalité (pour la conception des algorithmes de résolution)
dépend essentiellement de la forme du domaine des solutions et, plus précisément, de la possibilité
de le considérer comme un élément d’une famille plus vaste de domaines, i (E), paramétrée par
un vecteur E (vecteur d’états).
Considérons un problème d’optimisation, soumis à des contraintes, en variables (x; y) de la forme
générale
F = Opt f (x; y)
(P )
g(x; y) 2 Et
où g : Rk+1 ! Rm et Et Rm (lorsque Et est réduit à un seul point, on a un problème
d’optimisation avec contrainte d’égalité).
Supposons de plus que g soit séparable et puisse se mettre sous la forme
E est appelé l’ensemble des états et un élément E 2 E est appelé un vecteur d’état. Les fonctions h1
et h2 sont appelées les fonctions de transition, Et est l’ensemble des états terminaux admissibles.
L’idée consiste à remplacer la résolution du problème (P ), qui comporte k + 1 variables, par
la résolution d’une famille de problèmes d’optimisation à k variables
Notons
2 (E1 ) = fy=h2 (y; E1 ) 2 Et g l’ensemble des solutions du problème (P2 (E1 )):
Par suite, si l’on suppose que l’on a résolu tous les problèmes (P2 (E1 )) pour tous les E1 2 E, on
pourra résoudre le problème (P ) comme un problème d’optimisation d’une seule variable x par
Nous allons voir maintenant qu’en appliquant ce résultat de façon récursive, un problème d’optimisation
à n variables peut se résoudre en n étapes, chaque étape consistant à résoudre un certain nombre
de problèmes d’optimisation à une seule variable.
Supposons, d’autre part, qu’il existe un sous-ensemble E Rm (espace d’état) tel que g puisse
être calculé récursivement pour tout ensemble de valeurs x1 ; :::; xn par
8
>
> E1 = h1 (x1 ) 2 E
>
>
>
< E2 = h2 (x2 ; E1 ) 2 E
..
> .
>
> En = hn (xn ; En 1 ) 2 E
>
>
: g(x ; :::; x ) = E
1 n n
Considérons maintenant le problème (P2 (E1 )) pour E1 …xé. Ce problème se met lui-même sous
la forme
F2 (E1 ) = Opt f2 (x2 ; f 3 (x3 ; :::; xn ))
h3 (x3 ; :::; xn ; h2 (x2; E1 )) 2 Et
En identi…ant x à x2 , y à (x3 ; :::; xn ) et en appliquant la formule (3), on obtient la relation
En continuant de la sorte, les valeurs Fi (Ei 1 ) (pour 2 i n 1) peuvent être dé…nies, pour
tout Ei 1 2 E, par
Fi (Ei 1 ) = Optffi (xi ; Fi+1 (hi (xi ; Ei 1 )))g (4)
xi
et, pour i = n
Fn (En 1 ) = Opt ffn (xn )g (5)
xn ;
hn (xn ; En 1 ) 2 Et
où, pour i (2 i n), Fi (E) désigne la valeur optimale du problème
Donc, on voit qu’il est possible de déterminer, de proche en proche, par récurrence les fonctions Fi ,
pour i = n; n 1; :::; 2, puis la valeur optimale F du problème (P ) à partir de F2 . L’équation (4)
est appelée l’équation fonctionnelle de la programmation dynamique. Sa résolution, par récurrence
à partir des conditions (5) conduit à la procédure algorithmique à n étapes suivante :
Cet algorithme n’est autre qu’un calcul par récurrence e¤ectué dans l’ordre décroissants des indices
des variables et est appelé procédure « en arrière » par opposition à la procédure « en avant »
qui sera exposée ci-dessous.
Ainsi, de même que dans le problème du sac à dos (voir 2.2), l’algorithme consiste à :
- plonger le problème posé dans une famille de problèmes de même nature ;
- relier par une relation de récurrence les valeurs optimales de ces problèmes ;
- résoudre l’équation de récurrence obtenue (équation fonctionnelle) pour déterminer l’optimum
du problème posé.
Comme le nombre de sous-problèmes d’optimisation élémentaires (à une variable) à résoudre croît
comme le produit n p (où p est le nombre d’états qui doivent être considérés à chaque étape),
on ne pourra appliquer l’Algorithme 2 que dans des situations assez restrictives telles que :
- lorsque l’ensemble E des états est …ni et de cardinalité assez faible (on parle alors de program-
mation dynamique à nombre …ni d’états) ;
- lorsque l’ensemble E est un sous-ensemble de Rm comportant un nombre in…ni d’éléments (par
exemple un sous-ensemble compact de Rm ), mais que m (la dimension des vecteurs d’état) est
su¢ samment faible pour que l’on puisse approximer les fonctions Fi (E) sur E par discrétisation en
un nombre …ni (et si possible pas trop grand) de points E 1 , E 2 , ..., E q . Le calcul de Fi (E) pour
les autres états E se fait alors par interpolation linéaire ou polynomial.
Dans les autres cas, des techniques particulières devrons être mis en œuvre pour améliorer l’e¢ cacité
des algorithmes de programmation dynamique et seront exposées dans la prochaine section.
Figure 3
Pour assurer la validité du principe d’optimalité, il faut alors remplacer l’hypothèse de monotonie
au sens large intervenant dans la démonstration du théorème d’optimalité (Théorème 1) par
une hypothèse de monotonie au sens strict.
Nous dirons que f est décomposable au sens stricte si f est séparable sous la forme
f (x; y) = f1 (x; f2 (y))
et si f1 est une fonction strictement monotone de son deuxième argument c’est-à-dire
8x : z1 < z2 =) f1 (x; z1 ) < f1 (x; z2 )
z1 = z2 =) f1 (x; z1 ) = f1 (x; z2 )
Morin (1977) montra que si l’hypothèse de décomposabilité au sens strict est satisfaite, toute
solution optimale satisfait le principe d’optimalité et correspond donc à une solution de l’équation
fonctionnelle. De plus, il est facile de démontrer, que dans ces conditions, l’Algorithme 2 permet
de déterminer toutes les solutions optimales d’un problème.
f (x1 ; x2 ; :::; xn ) = Optff1 (x1 ); f2 (x2 ); :::; fn (xn )g (avec Opt = min ou max )
et peut s’écrire
f (x1 ; x2 ; :::; xn ) = Optff1 (x1 ); zg = f 0 (x1 ; z) avec z = Optff2 (x2 ); :::; fn (xn )g
On en déduit que f est décomposable. Cependant, on remarque que f 0 n’est pas strictement
monotone et que, par suite, le principe d’optimalité peut ne pas être satisfait par toutes les solutions
optimales.
Le sous-ensemble des sommets terminaux Xt est constitué par tous les sommets de la forme (E; n),
avec E 2 Et (ensemble des états terminaux). On remarque alors que :
- tout chemin entre I et Et est une solution du problème (i.e satisfait les contraintes g(x1 ; x2 ; :::; xn ) 2
Et );
- la longueur d’un tel chemin est
f1 (x1 ) + f2 (x2 ) + + fn (xn ):
Il en résulte que
la résolution du problème par programmation dynamique
équivaut à
la recherche d’un plus court (ou plus long) chemin entre I et Xt dans le graphe G.
L’étape i consiste à modi…er ces marques, à partir des valeurs optimales (E; i 1), de telle sorte
qu’à la …n de l’étape i, (E; i) représente e¤ectivement la longueur du plus court (plus long) chemin
joignant le sommet initial à ce sommet.
Si l’on veut obtenir, non seulement la valeur optimale de F , mais une solution optimale x , on
dé…nira, pour chaque i = 1; :::; n et pour chaque E 2 E, les quantités xi (E) donnant la valeur de
la variable xi ayant permis l’obtention de la valeur optimale (E; i).
A l’étape 1, on posera x1 (E) = x1 (où E = h1 (x1 )) et à l’étape i (2 i n), chaque fois
0
qu’une marque (E ; i) est améliorée et remplacée par (E; i 1) + fi (xi ), on posera xi (E) = xi .
Ceci permet, à la …n de l’Algorithme 3, d’expliciter une solution optimale x = (x1 ; :::; xn ) par :
Rappelons que, dans certains cas, la reconstruction d’une solution optimale x peut nécessiter
une moins grande quantité d’informations.
Période j 1 2 3 4 5
Demande dj 2 3 4 3 2
Prix pj 13 15 20 11 12
Sachant que le commerçant dispose d’une capacité de stockage de 5 unités (le coût de stockage est
nul), le problème consiste à déterminer la politique d’achat optimal, c’est-à-dire qu’on cherche à
trouver les quantités à acheter à chaque période de manière à minimiser le coût total d’achat sur
les 5 périodes. On sait de plus que :
1. les achats se font en début de période ;
2. on doit stocker les ventes de la périodes en cours ;
3. on commence et on …nit avec un stock nul ;
4. les quantités sont nécessairement entières.
(b)Modélisation.
Les étapes du problème : les périodes 1, 2, 3, 4 et 5.
L’état du système : la quantité sj de la marchandise restante en stock à la …n de la période j.
Les variables de décision : les quantités xj de la
8marchandise achetées en début de période j.
< dj sj 1 + xj 5 pour 1 j 5
Le système est régi par les relations suivantes : sj = sj 1 + xj dj pour 1 j 4
:
s0 = s5 = 0:
En e¤et,
dj sj 1 + xj 5 pour 1 j 5
les inégalités de cette première série de relations traduisent le fait que la quantité achetée au début
de la période j plus celle héritée de la période précédente
X d’une part doivent être su¢ santes, pour pourvoir à la demande de la période,
X mais d’autre part ne doivent pas excéder la capacité de stockage.
sj = sj 1 + xj dj pour 1 j 4
Alors que cette seconde série correspond au fait que la quantité disponible en début de période j
est utilisée pour satisfaire la demande ou se retrouve en stock pour la période suivante.
Les égalités s0 = s5 = 0 signi…ent que les stocks initial et …nal sont nuls.
P
5
Quant à la fonction objectif, que l’on veut minimiser, il s’agit de pj xj
j=1
(c) Résolution.
1ere méthode. On dé…nit
Vj (sj ; xj ) : le coût d’une politique entre la période initiale et la période j, si on achète xj au début
de la période j et le stock en …n de cette période j est sj .
Vj (sj ) : le coût de la politique optimale entre la période initiale et la période j, si le stock en …n
de cette période j est sj .
xj #
Vj (sj ) = minVj (sj ; xj ) sj 1 sj
xj ! période j !
Vj (sj ; xj ) = pj xj + Vj 1 (sj 1 ) = pj xj + Vj 1 (sj + dj xj ) #dj
5eme période.
d5 s5 x5 V5 (s5 ; x5 ) V5 (s5 )
La solution optimale est donnée par
2 0 0 0 + 190 = 190 190 x5 = 0; x4 = 5; x3 = 2; x2 = 2; x1 = 5
1 12 + 179 = 191 Coût V (0) = 190
2 24 + 168 = 192
j : est la période ;
sj : le niveau du stock à la …n de la période j.
R = (X; U; c) avec :
X = f(j; sj ) jj = 0; 5, s0 = s5 = 0; 0 sj 5 dj ; j = 1; 2; 3; 4g ;
U = f((i; si ); (j; sj )) jj = i + 1 et il existe une décision pour passer de (i; si ) à (j; sj )g ;
c((i; si ); (j; sj )) = pj :(sj + dj si ) = pi+1 :(si+1 + di+1 si ).
Figure 4
Le problème de la recherche d’une politique optimale d’achat est ramené donc à la détermination
d’un chemin de longueur minimum entre (0; 0) et (5; 0).
Le réseau ne comporte pas de cicuit puisque chaque arc conduit d’un état correspondant à la …n
de la période j 1 à un état de la …n de la période j. Il est donc justi…able d’utiliser amgorithme
de Bellman. Si on utilise l’algorithme de Bellman, on trouve les (j; sj ) les plus courtes distances
de (0; 0) à (j; sj ) et une arboescence A de racine (0; 0).
Généralisation.
En résumé, on peut considérer que l’on a plongé notre poroblème initial (P ) qui est un problème
de programmation linéaire en nombres entiers dans une classe de problèmes Pk (s) qui peuvent être
décrits comme suit :
il s’agit de déterminer une politique d’achats optimale sur les k premières périodes
sachant que nous voulons terminer la k eme période avec un stock de s unités.
où
Xk (s) = fxk jdk + dk 1 +s 5 xk s + dk g;
cet encadrement résultant de l’égalité
sk 1 + xk = dk + s
(le stock au début de la dernière période plus la quantité achetée
servent à satisfaire la demande et à constituer le stock …nal)
et du fait que
8 p
< p d’une part 0
sk 1 peut varier entre et d’autre part la capacité totale de stockage (5) diminuée par
:
la demande dk 1 de la période k 1.
Ici S représente le nombre d’états possibles à l’étape n + 1 et les étiquetes des états du côté droit
comme 1; 2; :::; S. Le système passe à l’état i avec une probabilité pi (i = 1; 2; : : : ; S) étant donné
l’état Sn et la décision xn à l’étape n. Lorsque le schéma ci-dessus est étendue pour inclure tous
les états et décisions possibles à toutes les étapes, elle est parfois appelée un arbre de décision.
Si l’arbre de décision n’est pas trop grand, il fournit un moyen utile de résumer les di¤érentes
possibilités.
En raison de la structure probabiliste, la relation entre fn (sn ; xn ) et fn+1 (sn+1 ) est nécessairement
un peu plus compliquée que celle pour la programmation dynamique déterministe. La forme précise
de cette relation dépendra de la forme de la fonction objectif globale.
Dans la plupart des problèmes réels, on est amené à prendre en compte l’incertain. Le processus
fait intervenir non plus seulement les choix du décideur mais également une part d’incertitude liée
à des paramètres extérieurs : on doit alors modi…er le cadre déterministe étudié jusqu’à présent.
Dans un problème de gestion de stocks par exemple, il est rare que la demande soit déterministe.
Des données statistiques permettent néanmoins généralement de modéliser l’incertain sous forme
d’une variable aléatoire correspondant à la demande. On évalue alors la séquence de choix au
regard d’un critère de décision donné (par exemple l’espérance de la valeur de la solution).
Ainsi, cela revient à considérer une fonction de transition non plus déterministe mais aléatoire.
Une politique ne consiste plus ici en une séquence de décisions, car une telle séquence n’aurait
pas de sens en présence du hasard. Il s’agit maintenant de
Il est commode de représenter le processus décision-hasard par un graphe d’états particulier, appelé
arbre décision-hasard, où l’on distingue :
~ deux types de sommets :
l’ensemble des arcs f(hi ; si+1 ) : si+1 2 + (hi )g correspond aux di¤érentes transitions
aléatoires possibles.
De plus, une probabilité de transition P (hi ; si+1 ) est associée à chaque arc (hi ; si+1 ).
Dans un tel contexte, l’état …nal possible n’est bien souvent pas unique :
En outre, on attribue une valeur scalaire v(sn ) à chaque état …nal sn 2 Sn (les feuilles de l’arbre
décision-hasard).
4.2 Résolution.
La valeur d’une politique optimale est l’espérance de la politique optimale et est obtenue en remontant
à partir des états …naux vers l’état initial selon les relations de récurrence suivantes :
4.3 Exemples.
Exemple 1. Considérons un contrat d’assurance auquel on peut décider de
Bien évidemment, on ne sait pas si on sera amené ou non à le faire valoir à la suite d’un sinistre.
De plus, la probabilité d’avoir un sinistre durant l’année 2 est conditionnée au fait qu’on ait déjà
subi ou non un sinistre durant l’année 1.
L’arbre décision-hasard correspondant à ce problème est représenté sur la …gure 5.
X Le sommet d1 (état) concerne le choix de souscrire (branche 1) ou non (branche 0) au contrat
lors de la première année.
X Les sommets h1 ou h2 (intervention du hasard) concernent l’occurrence (branche 1) ou non
(branche 0) d’un événement nécessitant de faire jouer ce contrat , où P (0) = 2=5 et P (1) = 3=5
sont données.
X Les sommets d2 , d3 , d4 et d5 concernent le choix de souscrire ou non au contrat lors de l’année
2.
X En…n, les sommets h3 , h4 , h5 , h6 , h7 , h8 , h9 et h10 concernent l’occurrence d’un événement
nécessitant de faire jouer le contrat lors de la deuxième année. Si on a déjà connu un sinistre lors
de l’année 1, la probabilité d’occurrence d’un tel événement est P (0) = 3=4 (et donc P (1) = 1=4).
Par contre, si on n’a pas connu de sinistre lors de l’année 1, les probabilités demeurent P (0) = 2=5
et P (1) = 3=5.
En chaque feuille de l’arbre décision-hasard …gure le coût total engendré (la valeur d’un état …nal).
La souscription à un contrat coûte 1, alors que faire face à un sinistre non couvert coûte 2 (contre
0 si l’on est assuré). On a
P2
v (f euille) = c (ai ) ,
8 i=1
>
> 0 si on ne souscrit pas à un contrat
>
>
>
> et on ne fait pas face à un sinistre
<
1 si on souscrit à un contrat
où c (ai ) = "si on fait face ou non à un sinistre couvert"
>
>
>
>
>
> 2 si on ne souscrit pas à un contrat
: "si on fait face à un sinistre non couvert"
et on fait face à un sinistre
On véri…era sans peine que de telles paramètres conduisent à associer la valeur minf6=5; 1g = 1 au
sommet d2 , 5=2 au sommet d3 , 2 au sommet d4 et 3=2 au sommet d5 . Par conséquent, l’étiquette
du sommet h1 vaut (1 2=5) + (5=2 3=5) = 19=10, et l’étiquette du sommet h2 vaut 17=10.
La politique optimale consiste donc à souscrire au contrat la première année, et à ne souscrire au
contrat la deuxième année que si l’on n’a pas subi de sinistre lors de la première année.
Exemple 2. Dans une entreprise, on doit commander et stocker un produit sur deux périodes, de
telle sorte à maximiser l’espérance mathématique du béné…ce. Au départ, le stock est au niveau
s0 = 2. Au début de chaque période i (i = 1; 2), on peut décider de l’achat de xi (1 xi 2)
unités au prix ai . Durant cette période i, une demande de yi unités (1 yi 2) au prix de vente
unitaire vi , s’e¤ectue avec la probabilité pi (vi ). À la …n de la 2eme période, les invendus éventuels
sont soldés au personnel de l’entreprise à un prix unitaire 20 DA. Les valeurs de ai , vi et pi (vi )
sont données comme suit :
Période i 1 2
Prix d’achat ai 10 20
Prix de vente vi 30 50
Probabilité pi (1) 0:5 0:4
Probabilité pi (2) 0:5 0:6
On note :
~ S1 et S2 les quantités en stock à la …n des périodes 1 et 2 (après vente) respectivement.
~ H1 et H2 les quantités en stock pendant les périodes 1 et 2, respectivement (après achat et
avant vente).
En utilisant ces notations et à la lumière des données du tableau ci-dessus, on a obtenu l’arbre
décision-hasard ci-dessous, où en chaque feuille on trouve le béné…ce total engendré en chaque
processus achat-vente. Autrement dit, si s2;` 2 S2 , est l’extrémité terminal du chemin s0 ; h1;k ; s1;k ; h2;` ; s2;` ,
alors la valeur de la feuille s2;` est v (s2;` ), où
v (s2;` ) = a1 (h1;k s0 ) + v1 (h1;k s1;k ) a2 (h2;` s1;k ) + v2 (h2;` s2;` ) + 20 s2;` ,8s2;` 2 S2 .
Partant des valeurs v(s2;k ) apportées aux sommets S2 , on dé…nit pour les sommets S1 , H1 et H2
les étiquettes suivantes :
P
v(h2;` ) = p2 (h2;` s2;` ):v(s2;k ); 8h2;` 2 H2
s2;` 2 + (h
2;` )
v(s0 ) = max
+
v(h1;k )
h2;` 2 (s1;k )
5 Conclusion.
Dans ce polycope, nous avons présenté un cadre formel pour la programmation dynamique, qui
est connue d’être une méthode d’énumération implicite des solutions et couramment utilisée en
optimisation combinatoire. Cette approche présente l’intérêt de pouvoir s’appliquer à une large
variété de problèmes, dont l’aspect séquentiel n’est pas forcément immédiat.
Deux procédures de résolution ont été données, une procédure "en avant" et une autre "en arrière",
pour lesquelles nous avons donné des conditions su¢ santes de validité (monotonie). Nous avons
aussi illustré ces procédures sur des exemples typiques en programmation dynamique (sac à dos,
plus court chemin, gestion de stocks).
En…n, une extensions classique de notre cadre d’étude (décision dans l’incertain) a été étudiée dans
une dernière partie.
6 Annexes.
A.1 Optimisation des systèmes dynamiques.
C’est l’optimisation de systèmes à évolution régie par une équation d’état (fonctionnelle) au cours
du temps et dont le comportement peut être modi…é par l’intermédiaire de variables de décision
(encore appelées de contrôle ou de commande). Ce problème apparaît dans de nombreux domaines
(plani…cation en économie, commande optimale en automatique, etc.) et a donné lieu à de très
nombreuses applications. Le modèle général lui correspondant est formellement identique à celui
étudié dans x2:4, où seule une interprétation dans le langage de la théorie des systèmes sera donnée.
On suppose que le système étudié peut être caractérisé à tout instant t par la donnée d’un vecteur
d’état E de dimension m (pour le contrôle de la trajectoire d’un mobile dans l’espace, l’état du
système à chaque instant t sera dé…ni par le couple position-vitesse).
De plus, on suppose que l’on peut agir sur le système par l’intermédiaire de variables (ou vecteurs)
de décision x1 ; x2 ; :::; xn , seulement à certains instants t0 ; t1 ; t2 ; :::; tn (pour le véhicule spatial à
un instant donné, les composantes du vecteur de décision correspondent aux poussées des di¤érents
réacteurs agissant sur la position du véhicule). Le comportement du système est alors dé…ni par
la donnée des fonctions de transition h1 ; h2 ; :::; hn où, pour tout i = 1; 2; :::; n
hi (xi ; Ei 1 )
8E : Fn (E) = min
xn
fcn (xn ; E)g
hn (xn ;E)2Et
puis pour 1 i n 1
8E : Fi (E) = minfci (xi ; E) + Fi+1 (hi (xi ; E)g
xi
F = F1 (E0 ):
On peut dé-récursiver l’algorithme. Il s’agit de remplir le tableau T directement case par case8 .
Algorithm Fibonacci F4
Algorithm Fibonacci F3 procédure Fibonacci(n)
procédure Fibonacci(n) Allouer T avec n + 1 cases
Allouer T avec n + 1 cases a=0
T [0] = 0 b=1
T [1] = 1 for i de 2 à n 1 do
for i de 2 à n 1 do c=b
T [i] = T [i 1] + T [i 2] b=a+b
end for a=b
return T [n] end for
end procedure return b
Il est immédiat que l’algorithme est bien linéaire. end procedure
Il prend aussi une quantité de mémoire linéaire. Pour notre exemple, il su¢ t de se rappeler
La dernière étape consiste à essayer de gagner des deux derniers termes pour calculer le nouveau.
en mémoire en ne mémorisant que le nécessaire. On peut donc n’utiliser qu’un espace mémoire
constant (Voir l’algorithme F4 ci-dessus).
8
On s’aperçoit qu’il faut faire le contraire de ce que fait l’algorithme récursif : commencer par les petites valeurs.
Réponse à notre problème est C1 (2). Les calculs sont résumés dans le tableau ci-dessous :
i si xi c(xi ) Ci (si ; xi ; P i (1)) Ci (si ; xi ; P i (2)) Ci (si ; xi ) Ci (si )
2 1 1 20 0:4 (50 + 20) 0:6 (100 + 0) 68 68
2 40 0:4 (50 + 40) 0:6 (100 + 20) 68
2 1 20 0:4 (50 + 40) 0:6 (100 + 20) 88 88
2 40 0:4 (50 + 60) 0:6 (100 + 40) 88
3 1 20 0:4 (50 + 60) 0:6 (100 + 40) 108 108
2 40 0:4 (50 + 80) 0:6 (100 + 60) 108
1 2 1 10 0:5 (30 + 88) 0:5 (60 + 68) 113 123
2 20 0:5 (30 + 108) 0:5 (60 + 88) 123
Figure A.4.1
On recherche le chemin le plus adéquat pour arriver à destination avant 16H00. Remarquons que
cet horaire est respecté si et seulement si un bus au plus est en retard. Soit R(P ) la variable
aléatoire représentant le nombre de bus en retard sur le chemin P . On cherche donc à maximiser
la probabilité P (R(P ) 1).
Au sommet t, on a P (R(s; 1; 3; t) 1) < P (R(s; 2; 3; t) 1). En e¤et, en additionnant la
probabilité que tous les bus soient à l’heure, avec les probabilités qu’un seul bus soit en retard, on
obtient :
8
>
> P (R(s; 1; 3; t) 1) = 0:009 + 0:9 0:09 + 0:1 0:01 + 0:9 0:09
<
= 0:172
>
> P (R(s; 2; 3; t) 1) = 0:016 + 0:6 0:04 + 0:6 0:04 + 0:9 0:16
:
= 0:208
et donc la solution optimale est le chemin (s; 2; 3; t). Malheureusement, si l’on prend comme
valeur du chemin P la probabilité P (R(P ) 1), l’application de la méthode de programmation
dynamique conduit à une erreur car le critère n’est pas monotone. En e¤et, au sommet 3 on a :
La programmation dynamique généralisée a été développée par [CAR 89, CAR 90]11 pour faire
face à ce type de situation. Elle est basée sur un principe faible d’optimalité qui s’énonce comme
suit :
Plus précisément, il s’agit d’adapter le principe d’optimalité au cas où la fonction de valuation des
politiques n’est pas monotone, en élimininant les politiques partielles dont on sait qu’il n’est pas
possible de les compléter en une politique optimale.Pour cela, nous utilisons pour chaque état s le
préordre partiel 4s tel que pour tout ( 1 ; 2 ) 2 (s0 ; s)2 :
1 4s 2 ,9 02 (s; sn ) : 8 2 (s; sn ); v( 1 ; 0 ) v( 2 ; 0 )
11
[CAR 89] CARRAWAY R., MORIN T., , MOSKOWITZ H., « Generalized dynamic programming for stochastic
combinatorial optimization » , Operations Research, vol. 37, n 5, p. 819-829, 1989.
[CAR 90] CARRAWAY R., MORIN T., MOSKOWITZ H., « Generalized dynamic programming for multicriteria
optimization » , European Journal of Operational Research, vol. 44, p. 95-104, 1990.