Vous êtes sur la page 1sur 55

1 Programmation dynamique

UNIVERSITE NOUVEAUX HORIZONS


UNH
Faculté de gestion

METHODES QUANTITATIVES EN GESTION

Par
Louis SUMBA CHENGE
Professeur ordinaire

Année académique 2022-2023


2 Programmation dynamique

OBJECTIFS PEDAGOGIQUES

Objectif général
A la fin de ce cours de méthodes quantitatives en gestion orienté vers les méthodes de la
programmation dynamique, l’apprenant doit être capable :
 de procéder à la division en phases ou périodes des systèmes économiques et de leur
appliquer des méthodes d’optimisation séquentielle adaptées afin de chercher la politique
ou la stratégie optimale ;
 de représenter les systèmes à optimiser séquentiellement à l’aide des graphes.
Objectifs spécifiques
Pour réaliser l’objectif global ci-dessus défini l’étudiant sera progressivement
capable
 De définir le théorème d’optimalité de Richard Bellman à la base des méthodes de
programmation dynamique ;
 D’expliquer la notion d’horizon économique d’un problème ;
 D’expliquer la démarche mathématique générale d’optimisation des systèmes en
programmation dynamique dans le cas déterministe et de l’appliquer à la résolution
séquentielle de certains problèmes économiques types (construction d’une autoroute,
répartition d’investissement, problème d’achat) ;
 D’expliquer les processus D.H et H.D et de les représenter à l’aide des graphes ;
 D’expliquer la démarche générale d’optimisation des processus markoviens, D.H ou H.D
et de l’appliquer à certains problèmes types en avenir aléatoire (problème de
réapprovisionnement, remplacement d’un ensemble d’équipement, etc.) ;
 De faire des analyses relatives à l’évaluation du risque pour une stratégie optimale ;
3 Programmation dynamique

CONTENU DU COURS

Introduction générale
Chapitre 1 : Programmation dynamique dans le cas déterministe
1.1 Formules d’optimisation séquentielle
1.1.1 Fonction séparable en phases
1.1.2 Politique et sous-politiques
1.1.3 Optimisation séquentielle
1.2 Application aux problèmes économiques
1.2.1 Optimisation des systèmes à variables discrètes
1.2.2 Optimisation des systèmes à variables continues
Chapitre 2 : Programmation dynamique dans le cas aléatoire
2.1 Théorème d’optimalité dans le cas aléatoire (systèmes discrets)
2.2 Processus D.H et H.D
2.3 Quelques exemples de programme dynamique en avenir aléatoire
2.4 Evaluation du risque pour une stratégie optimale
Références bibliographiques
4 Programmation dynamique

INTRODUCTION GENERALE

D’une manière générale, les problèmes qui se posent en sciences de gestion nécessitent
la prise des décisions. Le gestionnaire est souvent placé en face d’un choix à faire entre plusieurs
actions possibles, c’est-à-dire devant une « situation décisionnelle » qui requiert l’intervention
d’une décision. En effet, l’économie et les affaires sont fortement influencées par la
concurrence d’un côté, la technologie et la science d’un autre côté. La concurrence exige de la
part des entreprises de grands efforts pour produire à un moindre coût, économiser les moyens,
perfectionner la qualité des produits, intéresser la clientèle et rentabiliser chaque produit vendu.
P. Colomb corrobore ce fait en disant : « Dans le monde moderne, une entreprise, quelle que
soit sa finalité, élaboration des produits ou prestation des services, ne peut vivre, ou même
quelquefois tout simplement survivre, que si elle a une compétitivité suffisante. Une bonne
compétitivité est toujours le corollaire d’une bonne gestion ». Justement, pour être compétitive
sur le marché concurrentiel, l’entreprise doit être gérée sur base des décisions rationnelles issues
de l’analyse des observations objectives et systématiques, le plus souvent chiffrées.
Le cours des méthodes quantitatives en gestion devrait permettre, tant soit peu, à fournir
des outils d’ordre quantitatif pour orienter le gestionnaire à prendre les meilleures décisions
possibles dans un contexte managérial donné et à partir d’informations adéquates. C’est
pourquoi, le contenu donné à ce cours est consacré aux méthodes de programmation
dynamique qu’on utilise pour optimiser séquentiellement la gestion des problèmes qui se
posent à l’entreprise.
La programmation dynamique est une branche de la recherche opérationnelle ayant pour
objet l’optimisation séquentielle des systèmes ou de leur représentation mathématique, c’est-à-
dire une optimisation au cours de laquelle on opère par phases ou séquences. Le point de départ
des méthodes de programmation dynamique est le théorème d’optimalité présenté par le
mathématicien américain Richard Bellman. En bref, ce théorème s’exprime comme suit :
« Toute politique optimale ne peut être formée que des sous-politiques optimales ». N’est-il
pas, pour ainsi dire, évident que tout chemin optimal est constitué des portions de chemin, elles-
mêmes optimales ? S’il n’en était pas ainsi pour une portion quelconque, il en existerait une
autre meilleure, qui, complétée par la partie restante du chemin considéré, permettrait
d’améliorer celui-ci, ce qui serait contraire à l’hypothèse.
L’importance de ce théorème d’optimalité et l’efficacité des méthodes d’optimisation
séquentielles auxquelles il a donné naissance s’accentuent au fur et à mesure que l’on s’aperçoit
que la vraie nature de nombreux problèmes est séquentielle, c’est-à-dire autorise leur
5 Programmation dynamique

décomposition en phases, chacune ne dépendant que de ses voisines les plus proches et souvent,
dans les cas favorables, seulement de l’antérieure ou de la postérieure.
On considère généralement que la programmation dynamique concerne l’évolution dans
le temps d’un système économique, celle-ci étant à chaque phase partiellement aléatoire
(intervention du hasard) et partiellement contrôlée (intervention de l’homme). On peut
distinguer les évolutions de première et seconde espèce selon que à chaque phase, l’intervention
du hasard précède la décision humaine (processus H.D) ou, au contraire, la suit (processus D.H).
Evidemment, les cas limites sont ceux opposés :
- Le cas déterministe où le hasard disparaît ;
- Le cas des processus stochastiques où la décision humaine ne se manifeste pas.
Les plus intéressants des processus stochastiques sont les chaînes de Markov. Dans tous
les cas, certains caractères de la programmation dynamique, comme la division séquentielle du
problème, sont conservés, même dans certains cas déterministes où l’évolution temporelle
n’intervient pas.
En programmation dynamique, les problèmes à optimiser séquentiellement et de caractère
économique comportent des phases temporelles ou « périodes ». L’ensemble de toutes les
périodes est appelé « horizon économique » du problème
On peut regrouper à trois les différents horizons, à savoir :
- Les horizons fermés à gauche et à droite ou horizons fermés dans les deux sens : ici le
nombre N des périodes est fini ;
- Les horizons fermés à gauche et ouvert à droite, c’est-à-dire partant d’une certaine date vers
un futur non limité ;
- Les horizons ouverts dans les deux sens, à gauche et à droite, et les horizons ouverts à
gauche et fermés à droite. Ce groupe d’horizons est sans intérêt car le plus lointain passé
n’importe pas.
Le cas le plus important économiquement parlant et qui sera examiné dans ce cours est celui
d’un horizon fermé dans les deux sens.
Les variables qui interviennent en programmation dynamique sont soit discrètes, soit
continues. On les appelle variables de décision, ou variables de position ou encore variables
d’état.
Les applications économiques de la programmation dynamique sont nombreuses et
diversifiées. Ses méthodes interviennent notamment dans la résolution des problèmes
d’investissement, de réapprovisionnement, de gestion de stocks, de remplacement des
équipements, de jeux, etc.
6 Programmation dynamique

CHAPITRE 1 : PROGRAMMATION DYNAMIQUE DANS LE CAS


DETERMINISTE

La programmation dynamique dans le cas déterministe concerne les problèmes dont les
phases sont entièrement assujetties par l’intervention de l’homme grâce à une suite de décisions
séquentielles. Considérons un système pouvant changer d’état à chaque phase k par une
décision, les états possibles dans chaque phase k (k = 0, 1, 2, …, N) étant en nombre fini ou
non, mais dénombrables. On appelle « politique » une certaine succession de décisions de k =
0 à k = N. On appelle « sous-politique » une suite de décisions jointives faisant partie d’une
politique. Alors si l’on se donne une fonction de valeur relative à ces changements d’état et
qu’on se propose d’optimiser cette fonction, le théorème d’optimalité s’énonce comme suit :
« Une politique optimale ne peut être formée que de sous-politiques optimales ». En effet,
considérons une sous-politique extraite d’une politique optimale. Si cette sous-politique n’était
pas optimale, il en existerait une autre meilleure qui, complétée par la partie restante de la
politique considérée, permettrait d’améliorer celle-ci, ce qui serait contraire à l’hypothèse.

1.1 Formules d’optimisation séquentielle

1.1.1 Fonction séparable en phases


Considérons la fonction de N + 1 variables notées :
𝐹(𝑥0 , 𝑥1 , 𝑥2 , … , 𝑥𝑁 ) = 𝑣1 (𝑥0 , 𝑥1 ) + 𝑣2 (𝑥1 , 𝑥2 ) + ⋯ + 𝑉𝑁 (𝑥𝑁−1 , 𝑥𝑁 ) (1)
Cette fonction est décomposable par hypothèse en une somme de N fonctions élémentaires
𝑣𝑛 (𝑥𝑛−1 , 𝑥𝑛 ), 𝑛 = 1, 2, … , 𝑁. Nous allons nous proposer de trouver le maximum (ou le
minimum suivant le cas) de la fonction F sachant que chaque grandeur 𝑥𝑛 peut varier dans un
domaine qui ne dépend que de 𝑥0 et 𝑥𝑛+1 , ∀ 𝑛 = 1, 2, … , 𝑁. Dans un cas général, 𝑥𝑛 peut se
présenter sous forme d’un vecteur et s’écrire 𝑥𝑛 = (𝑥1𝑛 , 𝑥2𝑛 , … , 𝑥𝑘𝑛𝑛 ), c’est-à-dire 𝑥𝑛 est un
vecteur ayant 𝑘𝑛 composantes.
La forme particulière de la relation (1) imposée à F et la nature des domaines de variation
des variables nous permettent de considérer un système de N phases pour lequel 𝑣𝑛 (𝑥𝑛−1 , 𝑥𝑛 ),
𝑛 = 1, 2, … , 𝑁 serait la fonction de valeur attachée à chaque phase 𝑛, et F la fonction de valeur
attachée à l’ensemble des phases.

1.1.2 Politiques et sous-politiques


Un ensemble des valeurs particulières telles que :
7 Programmation dynamique

𝑥𝑖 , 𝑥𝑖+1 , 𝑥𝑖+2 , …, 𝑥𝑘 avec 0 ≤ 𝑖 ≤ 𝑘 ≤ 𝑁 (2)


sera appelé une « sous-politique ». Le mot « politique » est réservé à un ensemble de N-1 valeurs
𝑥0 , 𝑥2 , … , 𝑥𝑁 , les valeurs 𝑥0 et 𝑥𝑁 étant fixées.
Dans certains problèmes la décomposition en phases peut se faire d’une façon
quelconque : le système sera dit « non ordonné ». En revanche, le système sera dit « ordonné »
s’il se présente naturellement sous-forme séquentielle.

1.1.3 Optimisation séquentielle


Pour trouver la valeur maximale (ou minimale), F nous utilisons le théorème d’optimalité
qui est valable dans le cas de variables discrètes ou continues dans un intervalle.
Considérons les phases 1 et 2 ensembles, et appelons 𝑓0,2 (𝑥0, 𝑥1 ) la valeur optimale de la
somme 𝑣1 (𝑥0 , 𝑥1 ) + 𝑣2 (𝑥1 , 𝑥2 ) lorsque l’on fait varier 𝑥1 dans son domaine qui dépend
seulement de 𝑥0 et 𝑥2 . On a donc, en considérant une optimisation de recherche du maximum,
et les formules obtenues restant valables pour une recherche de minimum
𝑓0,2 (𝑥0 , 𝑥2 ) = max [𝑣1 (𝑥0 , 𝑥1 ) + 𝑣2 (𝑥1 , 𝑥2 )] (3)
𝑥1 ∈𝑋1 (𝑥0 , 𝑥2 )

Dans cette expression (3), 𝑥1 ∈ 𝑋1 (𝑥0 , 𝑥2 ) signifie que 𝑥1 appartient à un ensemble des valeurs
𝑋1 qui dépend seulement de 𝑥0 et 𝑥2 . La valeur ou les valeurs de 𝑥1 qui optimisent
𝑣1 (𝑥0 , 𝑥1 ) + 𝑣2 (𝑥1 , 𝑥2 ) définiront la ou les sous-politiques optimales pour les phases 1 et 2 et
pour le couple 𝑥0 et 𝑥2 considéré.
Maintenant prenons les phases 1, 2 et 3 ensembles et appelons 𝑓0,3 (𝑥0 , 𝑥3 ) la valeur
optimale de la somme 𝑣1 (𝑥0 , 𝑥1 ) + 𝑣2 (𝑥1 , 𝑥2 ) + 𝑣3 (𝑥2 , 𝑥3 ) lorsqu’on fait varier 𝑥1 et 𝑥2 dans
leurs domaines respectifs. D’après le théorème d’optimalité on a :
𝑓0,3 (𝑥0 , 𝑥3 ) = max [𝑓0,2 (𝑥0 , 𝑥2 ) + 𝑣3 (𝑥2 , 𝑥3 )] (4)
𝑥2 ∈𝑋2 (𝑥0 , 𝑥3 )

où 𝑥2 ∈ 𝑋2 (𝑥0 , 𝑥3 ) signifie que 𝑥2 appartient à un ensemble des valeurs 𝑋2 qui dépend


seulement de 𝑥0 et 𝑥3 . La valeur ou les valeurs de 𝑥1 obtenues plus haut et la valeur de 𝑥2 qui
optimise 𝑓0,2 (𝑥0 , 𝑥2 ) + 𝑣3 (𝑥2 , 𝑥3 ) définiront la ou les sous-politiques optimales pour les
valeurs de 𝑥0 et 𝑥3 .
Plus généralement, et avec les mêmes notations on écrira :
𝑓0,𝑛 (𝑥0 , 𝑥𝑛 ) = max [𝑓0,𝑛−1 (𝑥0 , 𝑥𝑛−1 ) + 𝑣𝑛 (𝑥𝑛−1 , 𝑥𝑛 )] (5)
𝑥𝑛−1 ∈𝑋𝑛−1 (𝑥0 , 𝑥𝑛 )

Avec 𝑓0,1 (𝑥0 , 𝑥1 ) = 𝑣1 (𝑥0 , 𝑥1 )


8 Programmation dynamique

Ceci permet de calculer les sous-politiques optimales successives pour les phases 1 et 2
ensembles, puis 1, 2 et 3 ensembles, …, et enfin pour les phases 1, 2, …, N – 1, N ensemble,
c’est-à-dire la ou les politiques optimales de valeur
𝐹 ∗ (𝑥0 , 𝑥𝑁 ) = max [𝑓0,𝑁−1 (𝑥0 , 𝑥𝑁−1 ) + 𝑣𝑁 (𝑥𝑁−1 , 𝑥𝑁 )]
𝑥𝑁−1 ∈𝑋𝑁−1 (𝑥0 , 𝑥𝑁 )

Remarques
 L’optimisation a été réalisée dans le sens 𝑛 = 0 à 𝑛 = 𝑁. Elle peut tout aussi bien être
réalisée dans le sens 𝑛 = 𝑁 à 𝑛 = 0.
 Dans le cas où 𝑥𝑁 n’est pas donné, mais seulement son domaine de variation, alors il
convient de chercher 𝐹 ∗ (𝑥0 ) = max 𝐹 ∗ (𝑥0 , 𝑥𝑁 ) (6)
𝑥𝑁 ∈𝑋𝑁

qui est donc le maximum correspondant à toutes les valeurs possibles de 𝑥𝑁 .


 De même, si c’est 𝑥0 qui n’est pas fixé : 𝐹 ∗ (𝑥𝑁 ) = max 𝐹 ∗ (𝑥0 , 𝑥𝑁 ) (7)
𝑥0 ∈𝑋0

 Enfin, ce peut être à la fois 𝑥0 et 𝑥𝑛 qui ne sont pas fixés. Alors :


𝐹 ∗ = max 𝐹 ∗ (𝑥0 , 𝑥𝑁 ) (8)
𝑥0 ∈𝑋0
𝑥𝑁 ∈𝑋𝑁

 La méthode est généralement présentée pour des fonctions économiques additives de


phase en phase, mais elle est valable pour des fonctions multiplicatives :
F ( x0 , x1 , ..., x N )  v1 ( x0 , x1 )  v2 ( x1 , x2 ) ...  v N ( x N 1 , x N ) (9)
ou des produits de composition au sens de Borel :
F ( x0 , x1 , ..., x N )  v1 ( x0 , x1 )  v2 ( x1 , x2 )  ....  v N ( x N 1 , x N ) (10)

 En programmation dynamique il n’existe pas encore un algorithme général pour la


résolution des problèmes si divers qu’on peut envisager comme la méthode de Simplexe
en programmation linéaire.

1.2 Application aux problèmes économiques

1.2.1 Optimisation des systèmes à variables discrètes

1. Construction d’une autoroute


On se propose de construire une autoroute entre deux villes A et N. Cette autoroute
passera à proximité de diverses autres villes et formera cinq tronçons. Pour chacun des tronçons
on a étudié et évalué le coût de diverses variantes. Ce coût tient compte des travaux proprement
dits, ouvrages d’art nécessaires, expropriation, coût social, etc. On aboutit finalement à un
graphe représenté sur la figure 1 où à chaque arrête est affecté un coût.
9 Programmation dynamique

En supposant que pour les calculs on parte de A vers N on a fléché les arrêtes dans le même
sens. Mais on pourrait tout aussi bien partir de N vers A en fléchant en sens inverse. On se
propose de trouver le chemin de coût minimal entre A et N.

𝑥0 𝑥1 𝑥2 𝑥3 𝑥4 𝑥5
H 13
B 9
5 11 3
5 E 10 8 15 L

C 8 2 I 3 4 N
A0 2 2 12 7 19
4 F 11 6 M 3
3 9 6 5 J 11 8 18 6
D 3 6 9
6 13 5

G 9 4 K

I II III IV V
Figure 1

Appelons 𝑥0 , 𝑥1 , 𝑥2 , 𝑥3 , 𝑥4 , et 𝑥5 les variables de décision relatives à chaque tronçon. Ces


variables ne prendront pas des valeurs numériques, mais prendront les positions voulues
indiquées par les sommets sur un même alignement. Ainsi la variable 𝑥2 peut-elle être E, F ou
G. On a successivement pour les ensembles de points qui correspondent aux variables :
𝑥0 : A, 𝑥1 : B, C, D, 𝑥2 : E, F, G, 𝑥3 : H, I, J, K, 𝑥4 : L, M, 𝑥5 : N
Appelons 𝑣𝐼 (𝑥0 , 𝑥1 ) le coût du tronçon I. Ce coût dépend des valeurs que peuvent prendre
𝑥0 et 𝑥1 . Il se trouve que 𝑥0 ne peut être que A, mais il pourrait en être autrement si l’origine
de l’autoroute pouvait être l’objet d’un choix. De même, soit 𝑣𝐼𝐼 (𝑥1 , 𝑥2 ) le coût du tronçon II.
Ce coût dépend de 𝑥1 et 𝑥2 . On définira de la même façon 𝑣𝐼𝐼𝐼 (𝑥2 , 𝑥3 ), 𝑣𝐼𝑉 (𝑥3 , 𝑥4 ) et 𝑣𝑉 (𝑥4 , 𝑥5 ).
Le coût total de l’autoroute sera :
F ( x0 , x1 , x2 , x3 , x4 , x5 )  v I ( x0 , x1 )  v II ( x1 , x2 )  v III ( x2 , x3 )  v IV ( x3 , x4 )  vV ( x4 , x5 )
Cherchons d’abord le coût minimal du tronçon I pour chacune des terminaisons B, C et D de
ce tronçon. On voit qu’il n’y a pas de choix à faire. En appelant 𝑓𝐼 (𝑥1 ) ce coût minimal, on a :
10 Programmation dynamique

f I ( B )  v I ( A, B )  5 ;

f I (C )  v I ( A, C )  2 ;

f I ( D)  v I ( A, D)  3.
Appelons maintenant f I , II ( x2 ) le coût minimal pour les tronçons I et II à la fois, et ceci

pour les différentes valeurs de 𝑥2 .


f I , II ( E )  Min  f I ( x1 )  v II ( x1 , E )  Min5  11, 2  8, 3    10 avec x1  C
x1  B ,C , D

f I , II ( F )  Min  f I ( x1 )  v II ( x1 , F )  Min5  , 2  4, 3  6  6 avec x1  C.


x1  B ,C , D

f I , II (G)  Min  f I ( x1 )  v II ( x1 , G)  Min5  , 2  9, 3  6  9 avec x1  D.


x1  B ,C , D

Ainsi, pour les tronçons I et II ensemble, le chemin le moins coûteux est :


ACE si l’on s’arrête en E ; Coût = 10.
ACF si l’on s’arrête en F ; coût = 6.
ADG si l’on s’arrête en G ; coût = 9.
Appelons maintenant f I , II , III ( x3 ) le coût minimal pour les tronçons I, II et III à la fois,

ceci pour les différentes valeurs de 𝑥3 . On a :


f I , II , III ( x3 )  Min  f I , II ( x2 )  v III ( x2 , x3 )
x2  E , F ,G

f I , II , III ( H )  Min 10  3, 6  8, 9    13 avec x2  E ;


x2  E , F ,G

f I , II , III ( I )  Min 10  2, 6  11, 9    12 avec x2  E ;


x2  E , F ,G

f I , II , III ( J )  Min 10  , 6  5, 9    11 avec x2  F ;


x2  E , F ,G

f I , II , III ( K )  Min 10  , 6  9, 9  4  13 avec x2  G.


x2  E , F ,G

Ainsi, pour les tronçons I, II, III ensemble, le chemin le moins coûteux est :
ACEH si l’on s’arrête en H ; coût = 13 ;
ACEI si l’on s’arrête en I ; coût = 12 ;
ACFJ si l’on s’arrête en J ; coût = 11 ;
ADGK si l’on s’arrête en K ; coût = 13 ;
En appelant f I , II , III , IV ( x4 ) le coût minimal pour les tronçons I, II, III et IV ensemble, on

a : f I , II , III , IV ( x4 )  Min
x3  H , I , J , K
f I , II , III ( x3 )  v IV ( x3 , x4 )
11 Programmation dynamique

Ainsi
f I , II , III , IV ( L)  Min
x3  H , I , J , K
f I , II , III ( x3 )  v IV ( x3 , L)  Min13  9, 12  3, 11  7, 13    15 avec x3  I

f I , II , III , IV (M )  Min 13  , 12  6, 11  8, 13  5  18 avec x3  I ou x3  K .


x3  H , I , J , K

Ainsi, pour les tronçons I, II, III et IV ensemble le chemin le moins coûteux est :
ACEIL si l’on s’arrête en L ; coût = 15 ;
ACEIM ou ADGKM si l’on s’arrête en M ; coût = 18.
Enfin, en appelant 𝑓 le minimum de F ( x0 , x1 , x2 , x3 , x4 , x5 ) , on a :

𝑓 = min [𝑓𝐼,𝐼𝐼,𝐼𝐼𝐼,𝐼𝑉 (𝑥4 ) + 𝑣𝑉 (𝑥4 , 𝑥5 ] = min [𝑓𝐼,𝐼𝐼,𝐼𝐼𝐼,𝐼𝑉 (𝑥4 ) + 𝑣𝑉 (𝑥4 , 𝑁)]


𝑥4 =𝐿,𝑀 𝑥4 =𝐿,𝑀

= 𝑚𝑖𝑛[15 + 4, 18 + 3] = 19 avec 𝑥4 = 𝐿.
Le chemin de coût minimal est donc ACEILN avec un coût de 19.
Remarques
1. L’optimisation a été réalisée de A vers N. Nous pouvons aussi optimiser en allant de N à A.
Les arcs de la figure 1 sont alors fléchés dans le sens de N à A. Nous reprenons les calculs ci-
dessous pour bien montrer le mécanisme de l’optimisation séquentielle de droite à gauche.
f V ( L)  vV ( L, N )  4 ; f V ( M )  vV ( M , N )  3.

f IV ,V ( H )  Min  fV ( x4 )  v IV ( H , x4 )  Min4  9, 3    13 avec x4  L


x4  L , M

f IV ,V ( I )  Min  fV ( x4 )  v IV ( I , x4 )  Min4  3, 3  6  7 avec x4  L


x4  L , M

f IV ,V ( J )  Min  fV ( x4 )  v IV ( J , x4 )  Min4  7, 3  8  11 avec x4  L ou x4  M


x4  L , M

f IV ,V ( K )  Min  fV ( x4 )  v IV ( K , x4 )  Min4  , 3  5  8 avec x4  M


x4  L , M

Ainsi, partant de N, le chemin le moins coûteux est :


- NLH si l’on s’arrête en H ; coût = 13 ;
- NLI si l’on s’arrête en I ; coût = 7 ;
- NLJ ou NMJ si l’on s’arrête en J ; coût = 11 ;
- NMK si l’on s’arrête en K ; coût = 8
Continuons avec f III , IV ,V ( x2 )

f III , IV ,V ( E )  Min
x3  H , I , J , K
f IV ,V ( x3 )  v III ( E, x3 )  Min13  3, 7  2,11  , 8    9 avec x3  I

f III , IV ,V ( F )  Min
x3  H , I , J , K
f IV ,V ( x3 )  v III ( F , x3 )  Min13  8, 7  11, 11  5, 8  9  16 avec x3  J
12 Programmation dynamique

f III , IV , V (G) 
x
Min
 H, I, J, K
f IV , V ( x 3 )  v III (G, x 3 )  Min13  , 7  , 11  , 8  4  12
3

avec x3  K
Ainsi, en partant de N le chemin le moins coûteux est :
- NLIE si l’on s’arrête en E avec comme coût = 9
- NLJF ou NMJF si l’on s’arrête en F avec comme coût = 16
- NMKG si l’on s’arrête en G avec comme coût = 12
f II , III , IV ,V ( x1 )  Min  f III , IV ,V ( x2 )  v II ( x1 , x2 
x2  E , F ,G

f II , III , IV ,V ( B)  Min  f III , IV ,V ( x2 )  v II ( B, x2 )  Min9  11, 16  , 12    20 avec x2  E


x2  E , F ,G

f II , III , IV ,V (C )  Min  f III , IV ,V ( x2 )  v II (C, x2 )  Min9  8, 16  4, 12  9  17 avec x2  E


x2  E , F ,G

f II , III , IV ,V ( D)  Min  f III , IV ,V ( x2 )  v II ( D, x2 )  Min9  , 16  6, 12  6  18 avec x2  G.


x2  E , F ,G

Ainsi, en partant de N le chemin le moins coûteux est :


- NLIEB si l’on s’arrête en B avec comme coût = 20 ;
- NLIEC si l’on s’arrête en C avec comme coût = 17 ;
- NMKGD si l’on s’arrête en D avec comme coût = 18.
Finalement, en appelant f le minimum de F(x0, x1, x2, x3, x4, x5), on a :
f  Min  f II , III , IV ,V ( x1 )  v I ( A, x1 )  Min20  5, 17  2, 18  3  19 avec x1  C
x1  B ,C , D

Ainsi, le chemin de coût minimal entre N et A est NLIECA coûtant 19.


2. Le procédé que nous avons employé pour trouver l’optimum est celui de la programmation
dynamique. Il consiste à chercher des sous-politiques optimales comprenant un nombre de plus
en plus grand de phases jointives jusqu’à trouver la ou les politiques optimales. On peut
commencer par une extrémité ou par l’autre. On pourrait même procéder par parties. Par
exemple, dans le cas traité dans cet exemple, il serait possible d’évaluer la ou les sous-politiques
optimales pour les phases I et II et la ou les sous-politiques optimales pour les phases III, IV et
V ; puis à partir de ces sous-politiques calculer la politique optimale. Ainsi :
 Sous-politiques optimales pour les phases I et II de :
A à E : ACE, Coût = 10 ;
A à F : ACF, Coût = 6 ;
A à G : ACG, Coût = 9.
 Sous-politiques optimales pour les phases III, IV, V de :
N à E : NLIE, coût = 9 ;
N à F : NLJF ou NMJF, coût = 16 ;
13 Programmation dynamique

N à G : NMKG, coût = 12.


Pour calculer la politique optimale de A à N, nous évaluerons, à partir de ces sous-politiques
optimales, tous les chemins de A à N qui contiennent ces sous-politiques :
 ACEILN : Coût = 10 + 9 = 19 ;
 ACFJLN ou ACFJMN : coût = 6 + 16 = 22 ;
 ADGKMN : Coût = 9 + 12 = 21
Donc le chemin ACEILN est le chemin optimal.
2. Répartition d’investissement
 Enoncé du problème
Soient quatre régions économiques I, II, III et IV où l’on veut fournir un effort de promotion
des ventes. On dispose d’une somme A pour faire des investissements à partager entre les quatre
zones. On suppose connus les profits réalisables dans chaque zone en fonction des
investissements. Supposons que cette somme A soit égale à 100 millions de dollars, soit 10
dizaines des millions. Supposons encore qu’on ne peut investir dans une région qu’un nombre
entier de dizaines de millions. Ainsi, une politique consisterait à affecter, par exemple : 3 en I,
1 en II, 5 en III et 1 en IV.

II
A I
III
IV

Figure 2
14 Programmation dynamique

Tableau 1.1 : données du problème


Investissements Profit en région I Profit en région II Profit en région III Profit en région IV

0 0 0 0 0
1 0.28 0.25 0.15 0.20
2 0.45 0.41 0.25 0.33
3 0.65 0.55 0.40 0.42
4 0.78 0.65 0.50 0.48
5 0.90 0.75 0.62 0.53
6 1.02 0.80 0.73 0.56
7 1.13 0.85 0.82 0.58
8 1.23 0.88 0.90 0.60
9 1.32 0.90 0.96 0.60
10 1.38 0.90 1.00 0.60

Courbes des profits en fonction des montants investis


1,60

1,40
𝑓1 (𝑥1 )

1,20
Profits en dizaines de millions

1,00 𝑓3 (𝑥2 )
𝑓2 (𝑥3 )
0,80

0,60 𝑓4 (𝑥4 )

0,40

0,20

0,00
0 1 2 3 4 5 6 7 8 9 10

Investissements en dizaines de millions


Figure 3
15 Programmation dynamique

Un tel problème est de caractère combinatoire et pourrait être résolu par énumération,
mais il faudrait évaluer un nombre considérable de politiques (286 exactement) ; ce serait
encore supportable, mais si l’unité indivisible choisie était le million alors le nombre de
politiques possibles serait trop grand.
Cherchons quelle politique de répartition des investissements donne le maximum du
profit total. Nous utiliserons le théorème d’optimalité Richard Bellman. Notons que l’ordre
dans lequel les phases sont considérées est complètement indifférent : il s’agit d’un système
non ordonné.
 Traitement séquentiel
Soient 𝑥1 , 𝑥2 , 𝑥3 et 𝑥4 les investissements en dizaines de millions (unités indivisibles)
dans les zones I, II, III et IV. Appelons 𝑣1 (𝑥1 ), 𝑣2 (𝑥2 ), 𝑣3 (𝑥3 ) et 𝑣4 (𝑥4 ) les profits dans les
régions correspondantes, 𝐹(𝑥1 , 𝑥2 , 𝑥3 , 𝑥4 ) le profit total. On doit avoir :
𝐹(𝑥1 , 𝑥2 , 𝑥3 , 𝑥4 ) = 𝑣1 (𝑥1 ) + 𝑣2 (𝑥2 ) + 𝑣3 (𝑥3 ) + 𝑣4 (𝑥4 ) avec une restriction ou contrainte :
𝑥1 + 𝑥2 + 𝑥3 + 𝑥4 = 10. Sachant que ces quatre variables ne peuvent prendre que les valeurs
entières 0, 1, 2, …, 10 posons :
𝑥1 + 𝑥2 = 𝑢1 (2.1')
𝑢1 + 𝑥3 = 𝑢2 (2.2')
𝑢2 + 𝑥4 = 𝐴 (2.3')
Avec 𝑢1 ≤ 𝐴 et 𝑢2 ≤ 𝐴.
Le montant A prenant successivement les valeurs 0, 1, 2, …, 10, alors le profit total peut
s’écrire : F ( x1 , u1 , u 2 , A)  v1 ( x1 )  v2 (u1  x1 )  v3 (u 2  u1 )  v4 ( A  u 2 ) (2.4' )
Nous calculons successivement :
f1, 2 (u1 )  Max
x1  0,1, 2, ..., u1
v1 (x1 )  v2 (u1  x1 ) (2.5')

f1, 2, 3 (u 2 )  Max
u1  0,1, 2, ..., u2
f 1, 2 (u1 )  v3 (u 2  u1 ) (2.6')

f1, 2, 3, 4 (A)  Max


u2  0,1, 2, ..., A
f 1, 2, 3 (u 2 )  v 4 (A  u 2 ) (2.7')

Le maximum de la fonction F aura pour valeur f1, 2, 3, 4 (A) pour A = 10.

Passons au calcul numérique. Nous commençons par le calcul de f1, 2 (u1 ) . Les résultats

de calcul sont consignés dans le tableau 1.2 où les colonnes (2) et (3) reproduisent la partie du
tableau 1.1 qui nous intéresse. Les colonnes (4) et (5) sont remplies avec les résultats des calculs
suivants :
f1, 2 (0)  Max v1 (x1 )  v 2 (0  x1 ) = 𝑣1 (0) + 𝑣2 (0)
16 Programmation dynamique

f1, 2 (1)  Max v1 (x 1 )  v 2 (1  x1 )  Max v1 (0)  v 2 (1) ; v1 (1)  v 2 (0)
x1  0,1 x1  0,1

 Max 0  0,25 ; 0,28  0  0,28

f1, 2 (2)  Max v1 (x 1 )  v 2 (2  x1 )  Max v1 (0)  v 2 (2) ; v1 (1)  v 2 (1) ; v1 (2)  v 2 (0)
x1  0,1, 2 x1  0,1, 2

 Max 0  0,41 ; 0,28  0,25 ; 0,45  0  0,53

f1, 2 (3)  max v1 (x1 )  v 2 (3  x 1 )  max 0  0,55 ; 0,28  0,41 ; 0,45  0,25 ; 0,65  0
x1  0,1, 2, 3 x1  0,1, 2, 3

 Max 0,55 ; 0,69 ; 0,7 ; 0,65 0,7

f1, 2 (4)  Max


x1  0,1, 2, 3, 4
v1 (x1 )  v 2 (4  x1 )
 Max 0,65 ; 0,28  0,55 ; 0,45  0,41 ; 0,65  0,25, 0.78  0  0,90

f1, 2 (5)  Max


x1  0,1, 2, 3, 4, 5
v1 (x1 )  v2 (5  x1 )
 Max 0  0,75 ; 0,28  0,65 ; 0,45  0,55 ; 0,65  0,41 ; 0,78  0,25 ; 0,90  0

 Max 0,75 ; 0,93 ; 1 ; 1,06 ; 1,03 ; 0,90  1,06

f1, 2 (6)  Max


x1  0,1, 2, 3, 4, 5, 6
v1 (x1 )  v2 (6  x1 )
 Max 0  0,80 ; 0,28  0,75 ; 0,45  0,65 ; 0,65  0,55 ; 0,78  0,41 ; 0,90  0,25 ; 1,02  0

 Max 0,80 ; 1,03 ; 1,1 ; 1,2 ; 1,19 ; 1,15 ; 1,02   1,2

f1, 2 (7)  Max


x1  0,1, 2, 3, 4, 5, 6, 7
v1 (x1 )  v2 (7  x1 )
 Max 0  0,85 ; 0,28  0,80 ; 0,45  0,75 ; 0,65  0,65 ; 0,78  0,55 ; 0,90  0,41 ; 1,02  0,25 ; 1,13  0

 Max 0,85 ; 1,08 ; 1,2 ; 1,3 ; 1,33 ; 1,31 ; 1,27 ; 1,13  1,33

f1, 2 (8)  Max


x1  0,1, 2, 3, 4, 5, 6, 7, 8
v1 (x1 )  v2 (8  x1 )
 Max 0  0,88 ; 0,28  0,85 ; 0,45  0,80 ; 0,65  0,75 ; 0,78  0,65 ; 0,90  0,55 ;1,02  0,41;1,13  0,25 ;1,23  0 

 Max 0,88 ; 1,13 ; 1,25 ; 1,40 ; 1,43 ; 1,45 ; 1,43 ; 1,38 ; 1,23  1,45

f1, 2 (9)  max v (x )  v


x1  0,1, 2, 3, 4, 5, 6, 7, 8, 9
1 1 2 (9  x 1 )

 Max 0,90 ; 1,16 ; 1,30 ; 1,45 ; 1,53 ; 1,55 ; 1,57 ; 1,54 ; 1,48 ; 1,32  1,57

f1, 2 (10)  max


x1  0,1, 2, 3, 4, 5, 6, 7, 8, 9,10
v (x )  v
1 1 2 (10  x 1 )

 Max 0,90 ; 1,18 ; 1,33 ; 1,50 ; 1,58 ; 1,65 ; 1,67 ; 1,68 ; 1,64 ; 1,57 ; 1,38  1,68
Ainsi, lorsqu’on dispose de 5 dizaines de millions à investir dans la région I et II, la sous-
politique optimale est d’investir respectivement les montants 𝑥1 = 3 et 𝑥2 = 2. Lorsqu’on
17 Programmation dynamique

dispose d’un capital de 9, la sous-politique optimale est d’investir le montant 𝑥1 = 6 en I et le


montant 𝑥2 = 3 en II.
Tableau 1.2
Sous-politiques optimales
x1 , x 2 , u1 v1 ( x1 ) v2 ( x2 ) f1, 2 (u1 ) pour les régions I et II
ensemble
0 0 0 0 (0 ; 0)
1 0.28 0.25 0.28 (1 ; 0)
2 0.45 0.41 0.53 (1 ; 1)
3 0.65 0.55 0.70 (2 ; 1)
4 0.78 0.65 0.90 (3 ; 1)
5 0.90 0.75 1.06 (3 ; 2)
6 1.02 0.80 1.20 (3 ; 3)
7 1.13 0.85 1.33 (4 ; 3)
8 1.23 0.88 1.45 (5 ; 3)
9 1.32 0.90 1.57 (6 ; 3)
10 1.38 0.90 1.68 (7 ; 3)

A l’aide de la formule (2.6’) et des résultats du tableau 1.2, on obtient le tableau 1.3 de la manière
suivante :
f1, 2, 3 (0)  Max f1, 2 (u1 )  v3 (0  u1 )  f1, 2 (0)  v0 (0)  0  0  0
u1  0

f1, 2, 3 (1)  Max f1, 2 (u1 )  v3 (1  u1 )  Max 0  0,15 ; 0,28  0  0,28


u1  0,1

f1, 2, 3 (2)  Max f1, 2 (u1 )  v3 (2  u1 )  Max0  0,25 ; 0,28  0,15 ; 0,53  0  0,53
u1  0,1, 2

f1, 2, 3 (3)  Max f1, 2 (u1 )  v3 (3  u1 )


u1  0,1, 2, 3

 Max 0  0,40 ; 0,28  0,25 ; 0,53  0,15 ; 0,70  0

 0,40 ; 0,53 ; 0,68 ; 0,70   0,70


18 Programmation dynamique

f1, 2, 3 (4)  Max


u1  0,1, 2, 3, 4
f 1, 2 (u1 )  v3 (4  u1 )

 Max 0  0,50 ; 0,28  0,40 ; 0,53  0,25 ; 0,70  0,15 ; 0,90  0

f1, 2, 3 (5)  Max f1, 2 (u1 )  v3 (5  u1 )


u1  0, ..., 5

 Max 0  0,62 ; 0,28  0,50 ; 0,53  0,40 ; 0,70  0,25 ; 0,90  0,15 ; 1,06  0

 Max 0,62 ; 0,78 ; 0,93 ; 0,95 ; 1,05 ; 1,06  1,06

f1, 2, 3 (6)  Max f1, 2 (u1 )  v3 (6  u1 )


u1  0, ..., 6

 Max 0  0,73 ; 0,28  0,62 ; 0,53  0,50 ; 0,70  0,40 ; 0,90  0,25 ; 1,06  0,15 ; 1,20  0 

 Max 0,73 ; 0,90 ; 1,03 ; 1,10 ; 1,15 ; 1,21 ; 1,20  1,21

f1, 2, 3 (7)  Max f1, 2 (u1 )  v3 (7  u1 )


u1  0, ..., 7

 Max 0  0,82 ; 0,28  0,73 ; 0,53  0,62 ; 0,70  0,50 ; 0,90  0,40 ;1,06  0,25 ;1,20  0,15 ;1,33  0

 Max 0,82 ; 1,01 ; 1,15 ; 1,20 ; 1,30 ; 1,31 ; 1,35 ; 1,33  1,35

f1, 2, 3 (8)  Max f1, 2 (u1 )  v3 (8  u1 )


u1  0, ..., 8

0  0,90 ; 0,28  0,82 ; 0,53  0,73 ; 0,70  0,62 ; 0,90  0,50 ; 1,06  0,40 ;
 Max 
1,20  0,25 ; 1,33  0,15 ; 1,45  0 

 Max 0,90 ; 1,10 ; 1, 26 ; 1,32 ; 1,40 ; 1,46 ; 1,45 ; 1,48 ; 1,45  1,48

f1, 2, 3 (9)  Max f1, 2 (u1 )  v3 (9  u1 )


u1  0, ..., 9

0  0,96 ; 0,28  0,90 ; 0,53  0,82 ; 0,70  0,73 ; 0,90  0,62 ; 1,06  0,50 ;
 Max 
1,20  0,40 ; 1,33  0,25 ; 1,45  0,15 ; 1,57  0 
19 Programmation dynamique

 Max 0,96 ; 1,18 ; 1,35 ; 1,43 ; 1,52 ; 1,56 ; 1,60 ; 1,58 ; 1,60 ; 1,57   1,60

f1, 2, 3 (10)  Max f1, 2 (u1 )  v3 (10  u1 )


u1  0, ...,10

0  1 ; 0,28  0,96 ; 0,53  0,90 ; 0,70  0,82 ; 0,90  0,73 ; 1,06  0,62 ;
 Max 
1,20  0,50 ; 1,33  0,40 ; 1,45  0,25 ; 1,57  0,15 ; 1,68  0 
 Max 1 ; 1,24 ; 1, 43 ; 1,52 ; 1,63 ; 1,68 ; 1,70 ; 1,73 ; 1,70 ; 1,72 ; 1,68  1,73
Les résultats des calculs ci-dessus sont
consignés dans le tableau 1.3 ci-après.
Tableau 1.3
𝑢1 , 𝑥3 , 𝑢2 𝑓1,2 (𝑢1 ) 𝑣3 (𝑥3 ) 𝑓1,2,3 (𝑢2 ) Sous-politiques Sous-politiques optimales
optimales pour I et II pour I, II et III
0 0,00 0,00 0,00 (0, 0) (0, 0, 0)
1 0,28 0,15 0,28 (1, 0) (1, 0, 0)
2 0,53 0,25 0,53 (1, 1) (1, 1, 0)
3 0,70 0,40 0,70 (2, 1) (2, 1, 0)
4 0,90 0,50 0,90 (3, 1) (3, 1, 0)
5 1,06 0,62 1,06 (3, 2) (3, 2, 0)
6 1,20 0,73 1,21 (3, 3) (3, 2, 1)
7 1,33 0,82 1,35 (4, 3) (3, 3, 1)
8 1,45 0,90 1,48 (5, 3) (4, 3, 1)
9 1,57 0,96 1,60 (6, 3) (3, 3, 3) ou (5, 3, 1)
10 1,68 1,00 1,73 (7, 3) (4, 3, 3)

A l’aide de la formule (2.7’) et des résultats du tableau 1.3. on obtient le tableau 1.4 ci-dessous
de la manière suivante :
f1, 2, 3, 4 (0)  Max f1, 2, 3 (u 2 )  v 4 (0  u 2 )  f1, 2,3 (0)  v4 (0)  0  0  0
u2  0

f1, 2, 3, 4 (1)  Max f1, 2, 3 (u 2 )  v 4 (1  u 2 )  Max 0  0,20 ; 0,28  0  0,28


u2  0,1

f1, 2, 3, 4 (2)  Max f1, 2, 3 (u 2 )  v 4 (2  u 2 )  Max 0  0,33 ; 0,28  0,20 ; 0,53  0  0,53
u2  0,1, 2

f1, 2, 3, 4 (3)  Max f1, 2, 3 (u 2 )  v 4 (3  u 2 )


u2  0,1, 2, 3

 Max 0  0,42 ; 0,28  0,33 ; 0,53  0,20 ; 0,70  0


20 Programmation dynamique

 Max 0,42 ; 0,61 ; 0,73 ; 0,70   0,73

f1, 2, 3, 4 (4)  Max


u2  0,1, 2, 3, 4
f 1, 2, 3 (u 2 )  v 4 (4  u 2 )

 Max 0  0,48 ; 0,28  0,42 ; 0,53  0,33 ; 0,70  0,20 ; 0,90  0

 Max 0,48 ; 0,70 ; 0,86 ; 0,90 ; 0,90   0,90

f1, 2, 3, 4 (5)  Max f1, 2, 3 (u 2 )  v 4 (5  u 2 )


u2  0, ..., 5

 Max 0  0,53 ; 0,28  0,48 ; 0,53  0,42 ; 0,70  0,33 ; 0,90  0,20 ; 1,06  0

 Max 0,53 ; 0,76 ; 0,95 ; 1,03 ; 1,10 ; 1,06   1,10

f1, 2, 3, 4 (6)  Max f1, 2, 3 (u 2 )  v 4 (6  u 2 )


u2  0, ..., 6

0  0,56 ; 0,28  0,53 ; 0,53  0,48 ; 0,70  0,42 ; 0,90  0,33 ; 1,06  0,20 ;
 Max 
1,21  0 
 Max 0,56 ; 0,81 ; 1,01 ; 1,12 ; 1,23 ; 1,26 ; 1,21  1,26

f1, 2, 3, 4 (7)  Max f1, 2, 3 (u 2 )  v 4 (7  u 2 )


u2  0, ..., 7

0  0,58 ; 0,28  0,56 ; 0,53  0,53 ; 0,70  0,48 ; 0,90  0,42 ; 1,06  0,33 ;
 Max 
1,21  0,20 ; 1,35  0 
 Max 0,58 ; 0,84 ; 1,06 ; 1,18 ; 1,32 ; 1,39 ; 1,41 ; 1,35  1,41

f1, 2, 3, 4 (8)  Max f1, 2, 3 (u 2 )  v 4 (8  u 2 )


u2  0, ..., 8

0  0,60 ; 0,28  0,58 ; 0,53  0,56 ; 0,70  0,53 ; 0,90  0,48 ; 1,06  0,42 ;
 Max 
1,21  0,33 ; 1,35  0,20 ; 1,48  0 
 Max 0,60 ; 0,86 ; 1,09 ; 1,23 ; 1,38 ; 1,48 ; 1,54 ; 1,55 ; 1,48  1,55

f1, 2, 3, 4 (9)  Max f1, 2, 3 (u 2 )  v 4 (9  u 2 )


u2  0, ..., 9

0  0,60 ; 0,28  0,60 ; 0,53  0,58 ; 0,70  0,56 ; 0,90  0,53 ; 1,06  0,48 ;
 Max 
1,21  0,42 ; 1,35  0,33 ; 1,48  0,20 ; 1,60  0 
 Max 0,60 ; 0,88 ; 1,11 ; 1,26 ; 1,43 ; 1,54 ; 1,63 ; 1,68 ; 1,68 ; 1,60  1,68

f1, 2, 3, 4 (10)  Max f1, 2, 3 (u 2 )  v 4 (10  u 2 )


u2  0, ...,10

0  0,60 ; 0,28  0,60 ; 0,53  0,60 ; 0,70  0,58 ; 0,90  0,56 ; 1,06  0,53 ;
 Max 
1,21  0,48 ; 1,35  0,42 ; 1,48  0,33 ; 1,60  0,20 ; 1,73  0 
 Max 0,60 ; 0,88 ; 1,13 ; 1,28 ; 1,46 ; 1,59 ; 1,69 ; 1,77 ; 1,81 ; 1,80 ; 1,73  1,81
21 Programmation dynamique

Les résultats de ces calculs sont placés dans le tableau 1.4 qui suit :
Tableau 1.4
𝑢2 , 𝑥4 , A 𝑓1,2,3 (𝑢3 ) 𝑣4 (𝑥4 ) 𝑓1,2,3,4 (𝐴) Sous-politiques Politiques optimales
optimales pour I, II
et III
0 0,00 0,00 0,00 (0, 0, 0) (0, 0, 0, 0)
1 0,28 0,20 0,28 (1, 0, 0) (1, 0, 0, 0)
2 0,53 0,33 0,53 (1, 1, 0) (1, 1, 0, 0)
3 0,70 0,42 0,73 (2, 1, 0) (1, 1, 0, 1)
4 0,90 0,48 0,90 (3, 1, 0) (2, 1, 0, 1) ou (3, 1, 0, 0)
5 1,06 0,53 1,10 (3, 2, 0) (3, 1, 0, 1)
6 1,21 0,56 1,26 (3, 2, 1) (3, 2, 0, 1)
7 1,35 0,58 1,41 (3, 3, 1) (3, 2, 1, 1)
8 1,48 0,60 1,55 (4, 3, 1) (3, 3, 1, 1)
9 1,60 0,60 1,68 (3, 3, 3) ou (5, 3, 1) (3, 3, 1, 2) ou (4, 3, 1, 1)
10 1,73 0,60 1,81 (4, 3, 3) (4, 3, 1, 2)

Ainsi, on a calculé la ou les politiques optimales pour A = 0, 1, …, 10

Pour A = 10, on trouve les valeurs optimales des variables : x 1  4 , x 2  3 , x 3  1 et x 4  2


* * * *

. Cette politique donnera un profit total maximum f1, 2, 3, 4 (10) = 1,81

On peut vérifier que toutes les sous-politiques de la politique optimale (4, 3, 1, 2) sont

optimales. Par exemple, en considérant I, II, III seulement, x 1  4 , x 2  3 , x 3  1 est bien une
* * *

sous-politique optimale correspondant à u2 = 8. Pour II, III, IV seulement, x 2  3 , x 3  1 ,


* *

x *4  2 est bien une sous-politique optimale correspondant à 𝑥2 + 𝑥3 + 𝑥4 = 6. Pour III et IV

seulement, x 3  1 , x 4  2 est bien une sous-politique optimale correspondant à 𝑥3 + 𝑥4 = 3.


* *

Notons une fois de plus que dans ce problème l’ordre dans lequel on peut optimiser est
arbitraire. Nous avons choisi l’ordre dans le sens I, II, III et IV ; mais nous aurions pu prendre
par exemple le sens III, I, IV, II ou toute autre permutation.
22 Programmation dynamique

1.2.2 Optimisation des systèmes à variables continues

Cas d’un problème d’achat formant un programme linéaire dynamique

Dans le présent exemple, les grandeurs considérées peuvent varier d’une façon continue.
Ce problème a un caractère séquentiel évident. L’ordre dans lequel les phases doivent être
considérées intervient, mais l’optimisation peut se faire dans un sens ou dans un autre.
Le service des achats d’une entreprise doit, pour permettre la réalisation du programme
des fabrications, approvisionner tous les deux mois en quantités connues d’une certaine matière
première. Le prix d’achat 𝑃𝑖 (𝑖 = 1, 2, … , 6) et la demande 𝑑𝑖 (𝑖 = 1, 2, … , 6) sont données pour
les 6 périodes de deux mois à venir dans le tableau 1.5
Tableau 1.5
Période 𝑖 1 2 3 4 5 6
Demande 𝑑𝑖 8 5 3 2 7 4
Prix d’achat 𝑃𝑖 11 18 13 17 20 10

La capacité de stockage étant limitée, le stock ne doit jamais dépasser une certaine valeur S.
Le stock initial est égal à 2 et le stock final doit être nul. On veut déterminer les quantités à
acheter au début de chaque période de telle sorte que le coût total d’achat soit minimal.
Appelons :
𝑆𝑖 : le stock à la date 𝑖 (fin de la période 𝑖 − 1, début de la période i) avant l’achat 𝑎𝑖 ;
𝑎𝑖 : la quantité achetée à la date 𝑖 ;
𝑥𝑖 : le stock à la date 𝑖 après l’achat 𝑎𝑖 .
La figure 4 donne un exemple d’une solution quelconque.
𝑥4
𝑥5
𝑥1 𝑑4 𝑎
5
𝑥2 𝑆5
𝑥3 𝑎4
𝑑3 𝑑5
𝑎1 𝑑1 𝑑2 𝑎3
𝑎2 𝑆4 𝑥6
𝑆1 𝑎6
𝑆3 𝑑6
a1
𝑆6
0 𝑆2 𝑆7
Date 1 Date 2 Date 3 Date 4 Date 5 Date 6 Date 7
Figure 4
23 Programmation dynamique

Tel que le problème est défini, on a : 𝑥𝑖 = 𝑆𝑖 + 𝑎𝑖 , 𝑖 = 1, 2, … , 6 (3.1)


L’état du système à chaque date i peut être décrit soit par la valeur de 𝑆𝑖 , soit par celle de 𝑥𝑖 .
Le choix de l’une ou de l’autre variable 𝑥𝑖 ou 𝑆𝑖 est indifférent. Nous choisissons arbitrairement
𝑥𝑖 comme variable de décision.
La quantité 𝑎𝑖 sera connue à l’aide de la relation (3.1) : 𝑎𝑖 = 𝑥𝑖 − 𝑆𝑖 .
La nature du problème impose les contraintes suivantes :
0 ≤ 𝑆𝑖 ≤ 𝑆, 𝑖 = 1, 2, … , 6 (3.2)
0 ≤ 𝑥𝑖 ≤ 𝑆, 𝑖 = 1, 2, … , 6 (3.3)
𝑆𝑖 ≤ 𝑥𝑖 , 𝑖 = 1, 2, … , 6 (3.4)
D’autre part :
𝑆𝑖+1 = 𝑥𝑖 − 𝑑𝑖 , 𝑖 = 1, 2, … , 6 (3.5)
Avec 𝑆1 = 2
0 ≤ 𝑆𝑖 ⇒ 𝑥𝑖−1 − 𝑑𝑖−1 ≥ 0
0 ≤ 𝑆𝑖+1 ⇒ 𝑥𝑖 − 𝑑𝑖 ≥ 0, soit 𝑥𝑖 ≥ 𝑑𝑖 , 𝑖 = 1, 2, … , 6 (3.6)
𝑆𝑖 ≤ 𝑥𝑖 ⇒ 𝑥𝑖 ≥ 𝑥𝑖−1 − 𝑑𝑖−1 , 𝑖 = 1, 2, … , 6 (3.7)
En réunissant les relations (3.6) et (3.7), on peut écrire :
𝑚𝑎𝑥[𝑑𝑖 ; 𝑥𝑖−1 − 𝑑𝑖−1 ] ≤ 𝑥𝑖 (3.8)
A partir de la relation (3.7) on peut écrire :
𝑥𝑖−1 ≤ 𝑥𝑖 + 𝑑𝑖−1 ou encore 𝑥𝑖 ≤ 𝑥𝑖+1 + 𝑑𝑖 , 𝑖 = 1, 2, … , 5 (3.9)
Rappelons que 𝑥𝑖 ≤ 𝑆, 𝑖 = 1, 2, … , 6 (3.10)
En réunissant les relations (3.9) et (3.10) il vient :
𝑥𝑖 ≤ 𝑚𝑖𝑛[𝑆, 𝑥𝑖+1 + 𝑑𝑖 ], 𝑖 = 1, 2, … , 5 (3. 11)
Finalement, l’ensemble des contraintes relatives à 𝑥𝑖 s’écrit :
𝑚𝑎𝑥[𝑑𝑖 ; 𝑥𝑖−1 − 𝑑𝑖−1 ] ≤ 𝑥𝑖 ≤ 𝑚𝑖𝑛[𝑆, 𝑥𝑖+1 + 𝑑𝑖 ], 𝑖 = 1, 2, … , 6 (3.12)
Dans ce problème on a 𝑥0 = 2, 𝑑0 = 0, 𝑆7 = 0, 𝑥7 = 0.
Enoncé du programme linéaire dynamique
Ce problème peut s’écrire sous forme d’un programme linéaire dont la fonction
économique exprime le coût total d’achat à minimiser. Ce programme s’écrit comme suit :
6 6 6
Min Z =  Pi a i   Pi x i  Si    Pi x i  x i -1  d i -1 
i 1 i 1 i 1

= 11[𝑥1 − 𝑥0 + 𝑑0 ] +18[𝑥2 − 𝑥1 + 𝑑1 ] +13[𝑥3 − 𝑥2 + 𝑑2 ] +17[𝑥4 − 𝑥3 + 𝑑3 ]


+20[𝑥5 − 𝑥4 + 𝑑4 ] +10[𝑥6 − 𝑥5 + 𝑑5 ]
= (11𝑑0 + 18𝑑1 + 13𝑑2 + 17𝑑3 + 20𝑑4 + 10𝑑5 ) − 11𝑥0 − 7𝑥1 + 5𝑥2 − 4𝑥3 − 3𝑥4
24 Programmation dynamique

+ 10𝑥5 + 10𝑥6
Min Z = 348 – 7𝑥1 + 5𝑥2 – 4𝑥3 – 3𝑥4 + 10𝑥5 + 10𝑥6
Sous les contraintes :
𝑥1 ≥ 8
 𝑥1 ≥ 9
 𝑥1 + 𝑥2 ≥ 8
𝑥2 ≥ 5
 𝑥2 ≥ 9
 𝑥2 + 𝑥3 ≥ 5
𝑥3 ≥ 3
 𝑥3 ≥ 9
 𝑥3 + 𝑥4 ≥ 3
−𝑥4 ≥ 2
 𝑥4 ≥ 9
 𝑥4 + 𝑥5 ≥ 2
𝑥5 ≥ 7
 𝑥5 ≥ 9
 𝑥5 + 𝑥6 ≥ 7
𝑥6 ≥ 4
 𝑥6 ≥ 9

Dans ce programme linéaire S = 9, 𝑑0 = 0, 𝑥0 = 𝑆1 = 2


Ce programme linéaire a une forme quasi-diagonale, forme spécifique à un programme linéaire
séquentiel. Plus généralement un programme linéaire séquentiel se présente de telle sorte que les
coefficients des variables sont nuls au-dessus d’un certain « escalier » allant du haut à gauche au
bas à droite.
Comme on l’a remarqué, 𝑥𝑖 dépend en général de 𝑥𝑖−1 et 𝑥𝑖+1 . Ainsi, la variable d’état de
la période qui suit la période considérée interviendra comme un paramètre.
Recherche de la politique optimale
On a supposé que S = 9. Pour trouver la politique optimale d’achat :
x *  x 1* , x *2 , x *3 , x *4 , x *5 , x *6 , laquelle peut être également exprimée à l’aide des 𝑎𝑖 :
 
a *  a1* , a *2 , a *3 , a *4 , a *5 , a *6 , nous commencerons arbitrairement le processus d’optimisation par
la période 6. Nous pourrions tout aussi bien, dans un tel programme, commencer par la période
25 Programmation dynamique

1 ou encore, par exemple, optimiser les phases 1, 2, 3, 4 d’une part, puis les phases 5 et 6 d’autre
part, et ensuite chercher la politique optimale pour l’ensemble des phases. Tout découpage en
ensembles jointifs des phases conviendrait aussi bien.
𝐹(𝑥1 , 𝑥2 , 𝑥3 , 𝑥4 , 𝑥5 , 𝑥6 ) = 𝑣1 (𝑥0 , 𝑥1 ) + 𝑣2 (𝑥1 , 𝑥2 ) + 𝑣3 (𝑥2, 𝑥3 ) + 𝑣4 (𝑥3, 𝑥4 ) + 𝑣5 (𝑥4 , 𝑥5 ) + 𝑣6 (𝑥5 , 𝑥6 )
où la quantité 𝑣𝑖 représente la dépense de la période 𝑖. On prendra 𝑥0 = 2.
Période 6 : Le stock final est nul, c’est-à-dire 𝑆7 = 0.
D’après la relation (3.5) on a 𝑆𝑖+1 = 𝑥𝑖 − 𝑑𝑖  𝑥6 − 𝑑6 = 𝑆7 , 𝑠𝑜𝑖𝑡 𝑥6 − 𝑑6 = 0

 𝑥6 − 4 = 0  𝑥6 = 𝑑6 = 4. On a donc obligatoirement x *6 = 4
La dépense réalisée pour la période 6 a pour valeur :
v6 ( x5 , x6 )  P6  a6  P6 x6  S 6   P6 x6  ( x5  d 5 )  10x6  x5  7  110  10 x5

Calculons les bornes de 𝑥5 pour l’optimisation des périodes 6 et 5. D’après la relation (3.12) et
sachant que 𝑆 = 9, 𝑥6 = 4, 𝑑5 = 7, 𝑑4 = 2, on a : 𝑚𝑎𝑥[𝑑5 , 𝑥4 − 𝑑4 ] ≤ 𝑥5 ≤ 𝑚𝑖𝑛[𝑆, 𝑥6 + 𝑑5 ],
soit 𝑚𝑎𝑥[7, 𝑥4 − 2] ≤ 𝑥5 ≤ 𝑚𝑖𝑛[9, 11] ⇒ 𝑚𝑎𝑥[7, 𝑥4 − 2] ≤ 𝑥5 ≤ 𝑚𝑖𝑛[9, 11]
⇒ 𝑚𝑎𝑥[7, 𝑥4 − 2] ≤ 𝑥5 ≤ 9
Les 𝑥𝑖 dans le problème sont toujours inférieurs ou égaux à 9,  𝑚𝑎𝑥[7, 𝑥4 − 2] = 7.
D’où 7 ≤ 𝒙𝟓 ≤ 9
Périodes 6 et 5 réunies : Posons 𝑓6,5 (𝑥4 ) = min [𝑣5 (𝑥4 , 𝑥5 ) + 𝑣6 (𝑥5 , 𝑥6 ]. Or
7≤𝑥5 ≤9

v5 ( x4 , x5 )  P5  a5  20( x5  S 5 )  20( x5  x4  d 4 )  20( x5  x4  2)  40  20 x5  20 x4

v5 ( x4 , x5 )  v6 ( x5 , x6 )  40  20 x5  20 x4  110  10 x5  150  10 x5  20 x4
Alors
𝑓6,5 (𝑥4 ) = min [150 + 10𝑥5 − 20𝑥4 ]
7≤𝑥5 ≤9

La fonction 150 + 10𝑥5 – 20𝑥4 est monotone (1) croissante de 𝑥5 . Il faut donc prendre la borne
*
inférieure de 𝑥5 comme valeur de 𝑥5 afin de rendre minimum f 6,5 ( x4 ) ; donc x 5 = 7

D’où d’après l’expression (3.5), x 5  d 5  S6 , soit S6 = 7 – 7 = 0


* * *

et d’après l’expression (3.1), on a : 𝑎6∗ = 𝑥6∗ − 𝑆6∗ = 4 − 0 = 4.


* * *
Donc x 5 = 7, S6 = 0 et a 6 = 4

Alors 𝑓6,5 (𝑥4 ) = 150 + 70 − 20𝑥4 = 220 − 20𝑥4

………………………………………………
(1) Rappelons qu’une fonction est monotone dans un intervalle quand sa variation ne change pas de signe dans cet
intervalle.
26 Programmation dynamique

Calculons les bornes de 𝑥4 :


D’après l’expression (3.12) on a : 𝑚𝑎𝑥[𝑑4 , 𝑥3 − 𝑑3 ] ≤ 𝑥4 ≤ 𝑚𝑖𝑛[𝑆, 𝑥5 + 𝑑4 ]
 𝑚𝑎𝑥[2, 𝑥3 − 3] ≤ 𝑥4 ≤ 𝑚𝑖𝑛[9, 9] ⇒ 𝑚𝑎𝑥[2, 𝑥3 − 3] ≤ 𝑥4 ≤ 9
Périodes 6, 5 et 4 réunies : Posons : 𝑓6,5,4 (𝑥3 ) = min [𝑣4 (𝑥3 , 𝑥4 + 𝑓6,5 (𝑥4 )]. Or
𝑚𝑎𝑥[2,𝑥3 −3]≤𝑥4 ≤9

v4 ( x3 , x4 )  P4  a4  P4 x4  S 4   P4 x4  x3  d 3   17x4  x3  3  17 x4  17 x3  51

𝑣4 (𝑥3 , 𝑥4 + 𝑓6,5 (𝑥4 ) = 17𝑥4 − 17𝑥3 + 51+220 −20𝑥4 = 271 − 3𝑥4 − 17𝑥3
𝑓6,5,4 (𝑥3 ) = min [271 − 3𝑥4 − 17𝑥3 ]
𝑚𝑎𝑥[2,𝑥3 −3]≤𝑥4 ≤9

Comme 271 – 3𝑥4 – 17𝑥3 est une fonction monotone décroissante de 𝑥4 , il faut prendre la borne
supérieure de 𝑥4 comme sa valeur afin de rendre maximum la valeur de la fonction f 6,5, 4 ( x3 ) ;

d’où x *4 = 9  S5  x 4  d 4 = 9 – 2 = 7 et a 5  x 5  S5 = 7 – 7 = 0
* * * * *

* * *
On a donc x 4 = 9, S 5 = 7 et a 5 = 0

Alors f 6, 5, 4 (x 3 ) = 271 – 3  9 – 17𝑥3 = 244 – 17𝑥3

Calculons les bornes de 𝑥3 en utilisant l’expression (3.12)


𝑚𝑎𝑥[𝑑3 , 𝑥2 − 𝑑2 ] ≤ 𝑥3 ≤ 𝑚𝑖𝑛[𝑆, 𝑥4 + 𝑑3 ]  𝑚𝑎𝑥[3, 𝑥2 − 5] ≤ 𝑥3 ≤ 𝑚𝑖𝑛[9, 9 + 3]
 𝑚𝑎𝑥[3, 𝑥2 − 5] ≤ 𝑥3 ≤ 9
Périodes 6, 5, 4 et 3 réunies : 𝑓6,5,4,3(𝑥2 ) = min [𝑣3 (𝑥2 , 𝑥3 ) + 𝑓6,5,4 (𝑥3 )]. Or
𝑚𝑎𝑥[3,𝑥2 −5]≤𝑥3 ≤9

v3 ( x2 , x3 )  P3  a3  P3 x3  S 3   P3 x3  x2  d 2   13x3  x2  5  65  13 x3  13 x2

𝑣3 (𝑥2 , 𝑥3 ) + 𝑓6,5,4 (𝑥3 ) = 65 + 13𝑥3 − 13𝑥2 + 244 − 17𝑥3 = 309 −4𝑥3 − 13𝑥2
f 6, 5, 4, 3 (x 2 )  Min 309  4x 3  13x 2 
max 3 ; x 2  5  x3  9

Comme 309 – 4𝑥3 – 13𝑥2 est une fonction monotone décroissante de 𝑥3 , il faut prendre la borne
supérieure de 𝑥3 comme valeur de 𝑥3 afin de pouvoir rendre minimum la valeur de la fonction
*
f 6,5, 4,3 ( x2 ) ; d’où x 3 = 9

 S*4  x *3  d 3 = 9 – 3 = 6 et a *4  x *4  S*4 = 9 – 6 = 3
* * *
On a donc x 3 = 9, S 4 = 6 et a 4 = 3

Alors f 6, 5, 4, 3 (x 2 ) = 309 – 4  9 – 13𝑥2 = 273 – 13𝑥2

Calculons les bornes de 𝑥2 en utilisant l’expression (3.12) ; on trouve


𝑚𝑎𝑥[𝑑2 , 𝑥1 − 𝑑1 ] ≤ 𝑥2 ≤ 𝑚𝑖𝑛[𝑆, 𝑥3 + 𝑑2 ]
 𝑚𝑎𝑥[5, 𝑥1 − 8] ≤ 𝑥2 ≤ 𝑚𝑖𝑛[9, 9 + 5]
 𝑚𝑎𝑥[5, 𝑥1 – 8] ≤ 𝑥2 ≤ 9
27 Programmation dynamique

Par ailleurs d’après les relations (3.3) et (3.6) on peut écrire 𝑑1 ≤ 𝑥1 ≤ 𝑆


 8 ≤ 𝑥1 ≤ 9  0 ≤ 𝑥1 − 8 ≤ 1
Alors 𝑚𝑎𝑥[5, 𝑥1 − 8] = 5. Alors 5 ≤ 𝑥2 ≤ 9
Périodes 6, 5, 4, 3 et 2 réunies :
𝑓6,5,4,3,2 (𝑥1 ) = min [𝑣2 (𝑥1 , 𝑥2 ) + 𝑓6,5,4,3 (𝑥2 )].
5≤𝑥2 ≤9

Or v 2 ( x1 , x 2 )  P2  a 2  P2 x 2  S 2   P2 x 2  x1  d1   18x 2  x1  8  144  18 x 2  18 x1

𝑣2 (𝑥1 , 𝑥2 ) + 𝑓6,5,4,3 (𝑥2 ) = 144  18 x2  18 x1 +273 – 13𝑥2 = 417+5𝑥2 − 18𝑥1


 𝑓6,5,4,3,2 (𝑥1 ) = min [417 + 5𝑥2 − 18𝑥1 ]
5≤𝑥2 ≤9

La fonction 417 + 5𝑥2 − 18𝑥1 est une fonction monotone croissante de 𝑥2 , il faut donc prendre
la borne inférieure de 𝑥2 comme valeur de 𝑥2 afin de minimiser la fonction 𝑓6,5,4,3,2 (𝑥1 ) ; c’est-

à-dire x 2 = 5. Par conséquent : S3  x 2  d 2 = 5 – 5 = 0 ; a 3  x 3  S3 = 9 – 0 = 9.


* * * * * *

On a donc x *2 = 5, S*3 = 0 et a *3 = 9

 𝑓6,5,4,3,2 (𝑥1 ) = 417 + 5×5 − 18𝑥1 = 442 − 18𝑥1


Calculons les bornes de 𝑥1 . D’après l’expression (3.12) on a :
𝑚𝑎𝑥[𝑑1 , 𝑥0 − 𝑑0 ] ≤ 𝑥1 ≤ 𝑚𝑖𝑛[𝑆, 𝑥2 + 𝑑1 ]  𝑚𝑎𝑥[8, 2 − 0] ≤ 𝑥1 ≤ 𝑚𝑖𝑛[9, 5 + 8]
 𝑚𝑎𝑥[8, 2] ≤ 𝑥1 ≤ 𝑚𝑖𝑛[9, 13]
Ainsi, 8≤ 𝑥1 ≤ 9
Périodes 6, 5, 4, 3, 2 et 1 réunies
𝐹 ∗ = min [𝑣1 (𝑥0 , 𝑥1 ) + 𝑓6,5,4,3,2 (𝑥1 )].
8≤𝑥1 ≤9

On a : v1 ( x0 , x1 )  v1 ( x1 )  P1  a1  P1 x1  S 0   11x1  2  11x1  22

 𝑣1 (𝑥0 , 𝑥1 ) + 𝑓6,5,4,3,2 (𝑥1 ) = 11x1  22 + 442 − 18𝑥1 = 420 − 7𝑥1


 𝐹 ∗ = min [420 − 7𝑥1 ]
8≤𝑥1 ≤9

Comme 420 – 7𝑥1 est une fonction monotone décroissante de 𝑥1 , il faut prendre la borne
supérieure de 𝑥1 comme sa valeur afin de rendre minimum la valeur de la fonction 𝐹 ∗ ; donc

x 1* = 9. D’où S*2  x 1*  d1 = 9 –8 = 1 ; a *2  x *2  S*2 = 5 – 1 = 4


F* = 420 – 7  9 = 357

Enfin a 1  x 1  S1 = 9 – 2 = 7.
* *

Ainsi la politique optimale est donnée par :


x *  x 1* , x *2 , x *3 , x *4 , x *5 , x *6   9, 5, 9, 9, 7, 4 ou encore
28 Programmation dynamique

a *  a 1* , a *2 , a *3 , a *4 , a *5 , a *6   7, 4, 9, 3, 0, 4
Le coût d’achat minimal ou la dépense minimale pour les 6 périodes est donc F* = 357.
La politique optimale est reprise sur la figure 5 ci-après :

x 1* x *3 x *4

S*5  x *5

* S*4
x 2

x *6
S1*

S*2
S*3 S*6 S*7
1 2 3 4 5 6 7
Figure 5
Exercice : Reprendre le même exercice avec S = 20
Réponse : x* = [20, 12, 12, 9, 7, 4] ou a* = [18, 0, 5, 0, 0, 4]
La dépense minimale est F* = 303.
29 Programmation dynamique

CHAPITRE 2 : PROGRAMMATION DYNAMIQUE DANS LE CAS ALEATOIRE

2.1 Théorème d’optimalité dans le cas aléatoire (systèmes discrets)


Soit un système pouvant changer d’état à chaque phase n (n = 0, 1, 2, …, N), les états
étant en nombre fini ou non mais dénombrables. On appellera Pij(r) la probabilité de passer d’un

état 𝐸𝑖 à un état 𝐸𝑗 lorsque la décision est r, le nombre de décisions possibles état fini ou non

mais dénombrables. Ainsi, les Pij(r) dépendront de i, de j, de r et éventuellement de n.

A tout changement d’état 𝐸𝑖 → 𝐸𝑗 et pour toute décision r, on attache une valeur R ij(r) qui

peut dépendre aussi de n. On appelle « vecteur de décision à la phase n », l’ensemble des


décisions choisies à cette phase n. On appelle « stratégie(1) », une séquence jointive de vecteurs
de décision, séquence prise de la date 0 à la date N.
On appelle « sous-stratégie », une séquence jointive des vecteurs de décision de la date N – n à
la date N, n = 1, 2, … , N-1. Le théorème d’optimalité s’énonce alors comme suit : « Une sous-
stratégie optimale de N – n à N ne peut être formée que par des sous-stratégies optimales de
N – n + 1 à N, ceci étant vrai pour tout n = 1, 2, …, N ».
L’emploi du critère de la valeur optimale de l’espérance mathématique nous oblige à
remonter du futur au présent ; d’où la définition des sous-stratégies de N – n à N et non pas de
0 à n. Nous reprenons ci-dessous cette remarque importante : « lorsque l’avenir est aléatoire,
et si l’on se donne comme critère l’optimisation de l’espérance mathématique de la valeur
totale, cette optimisation ne peut être menée que dans un sens, en remontant du futur vers le
passé ».

(1)
Face au hasard, il convient de remplacer le mot « politique » par le mot « stratégie ».
30 Programmation dynamique

2.2 Processus D.H et processus H.D

1. Processus D.H (Décision-Hasard)


Considérons le cas aléatoire discret et stationnaire schématisé par la figure 3.1 ci-après :

PHASE 1 PHASE 2 ... PHASE n – 1 PHASE n

E 1 E 1 E 1 E 1
E1 E1
E1
E 2 E 2 E 2 E 2
E2
E2 E2

E m '1
E m '1 Em "1
Em
Em
Em Em '1
E m '
E m ' E m ' E m '
D H D H .… D H D H
Date 1 date 1' date 2 date 2' date (n – 1)' date n date n'
Figure 2.1: Processus séquentiel type D.H

A chaque date n, le système peut se trouver dans un état E i  E ; une décision le fait

passer de l’état 𝐸𝑖 à un état E r  D (E i ) à une date n’ telle que n < n' < n + 1. A toute décision
E i  Er est attachée une valeur 𝑎𝑖𝑗 . A la date n' le hasard intervient et le système retourne à
l’un des états E j  H Er   E avec la probabilité 𝑃𝑟𝑗 . A cette transition est attachée une valeur

𝑏𝑟𝑗 . On appellera « phase n » l’intervalle compris entre la date n et la date n + 1.

Soit f i ( N  n, N) la valeur probable (espérance mathématique) optimale pour


l’ensemble des phases n, n + 1, …, N – 1, N lorsque le système est dans l’état 𝐸𝑖 à la date n.
En vertu du théorème d’optimalité et en acceptant le critère de la valeur probable optimale, nous
pouvons écrire :
 

f i (N  n, N)  opt a ir   Prj b rj  f j (N  n  1, N 
E r  D (Ei ) 
 (14)
 E j  H (E r ) 

𝑖 = 1, 2, …, M ; n = 1, 2, …, N
31 Programmation dynamique

Avec f i (N, N)  f 0, i (15)

Etant des quantités données


Un système dans lequel, à chaque phase un effet aléatoire succède à une décision sera
appelé « processus D.H ».
Les formules d’optimisation séquentielle (28) et (29) peuvent être généralisées aux cas
non stationnaires. On aura alors :
 
f i (N  n, N)  opt a ir (n)  
(n) Prj( n) b ij (n)  f j (N  n  1, N   (16)
Er (n)  D(n) E i (n) E j (n) H E r (n) 

n = 1, 2, …, N
f i (N, N)  f 0, i (17)

2. Processus H.D (Hasard-Décision)

A chaque date n considérée, le système peut se trouver dans un état Er  E : à cette date

le hasard intervient et le système passe dans un état E j  H Er  avec une probabilité 𝑃𝑟𝑗 et

une valeur 𝐶𝑟𝑗 . A la date n' telle que n < n' < n + 1 une décision intervient et permet de retourner
à l’un des états Es  E , tel que Es  D (E j ) et ceci avec une valeur 𝑑𝑟𝑗 . Les dates et phases

sont indiquées sur la figure 3.2 ci-après.


PHASE 1 PHASE 2 ….. PHASE (n – 1) PHASE n

E 1 E 1 E 1

E1 E1 E1
E1
E 2 E 2
E 2
E2
E2 E2 E2

E m '1 E m '1 E m '1

Em
Em Em Em
E m '
E m ' E m '

H D H D … H D H D
Figure 3.2 : Processus séquentiel type D.H
32 Programmation dynamique

Soit g r ( N  n, N) la valeur probable (espérance mathématique) optimale pour

l’ensemble des phases n, n + 1, …, N – 1, N lorsque le système est dans l’état E r à la date n.


En vertu du théorème d’optimalité et en acceptant le critère de la valeur moyenne, nous pouvons
écrire :
 
g r ( N  n, N)   
PrjC rj  opt d jS  gS ( N  n  1, N)   (18)
E j  H ( Er )  E'S  D ( E j ) 
n = 1, 2, …, N ; r = 1, 2, …, M'
Avec g r ( N, N)  g 0, r (19),

Quantités données
Un système dans lequel, à chaque phase, un effet aléatoire précède une décision sera
appelé « processus H.D »
Dans le cas d’un processus non stationnaire avec des notations analogues à celles utilisées
pour un processus D.H on aura :
 (n) (n) 
g r ( N  n, N)   Prj C rj  opt  
jS  g S ( N  n  1, N) 
d (n) (20)
E j (n) H(n) Er (n)  ES (n) D(n) E j (n) 
n = 1, 2, …, N et r = 1, 2, …, M’
avec g r ( N, N)  g 0, r (21), quantités données.

Remarques
1. Processus plus généraux
On peut considérer des processus tels que, à l’intérieur d’une phase, on ait une succession
de décisions et d’effets du hasard, par exemple H1D1D2H2H3 avec des applications données
de chaque ensemble d’états dans le suivant. Il est alors possible de généraliser les formules
(14), (16), (18) et (20). Ces formules généralisées deviennent compliquées mais pas difficile
à reconstituer si nécessaire pour un processus donné.
2. Réduction à une chaîne de Markov avec décision
Les processus discrets tels que ce qui se passe à la date n ne dépend que de l’état considéré
à la date n – 1 sont markoviens. Ils peuvent former des chaînes de Markov multiples s’ils
sont stationnaires. Toutefois, les processus DH, HD et leur généralisation, lorsque les phases
sont décomposables en une succession de décisions et d’effets du hasard, conviennent tout
aussi bien aux cas non stationnaires qu’aux cas stationnaires. Ils sont donc beaucoup plus
pratiques.
33 Programmation dynamique

2.3 Quelques exemples de programme dynamique en avenir aléatoire

1. Etude d’un jeu de hasard


On considère quatre cases numérotées A, B, C, D (voir figure 3.3 ci-dessous)

A B

C D

Figure 2.3
Le jeu se décompose en 1 phase préalable suivie de 3 phases. On donne au joueur un jeton à
placer dans une case.
Phase 0 : Le joueur indique dans quelle case son jeton se trouve initialement.
Phase I : Etant initialement dans une certaine case, le joueur peut se déplacer selon les flèches
pointillées indiquées sur la figure 3.4. Ainsi, étant initialement en B il peut aller en A, en B ou
en D. Ce mouvement étant réalisé, le hasard intervient, une roue de loterie appropriée renvoie
le jeton dans une autre case selon les différentes lois de probabilité indiquées dans la colonne
« hasard » de la phase 1. Ainsi, après la décision, le jeton étant en D, les trois évènements
suivants peuvent se produire : il va en A avec un gain de 3 et une probabilité de 0,5 ; en C avec
un gain de 2 et une probabilité de 0,3 ou en D avec un gain de 1 et une probabilité de 0,2.
Phase II : Même processus, mais l’ensemble des décisions autorisées est différent ainsi que les
gains et lois de probabilité.
Phase III : Encore le même processus, mais avec un ensemble de décisions autorisées, de gains
et probabilités différent.
Le jeu se termine en phase III et on calcule le gain total pour les 3 phases. On se propose
de déterminer l’espérance mathématique optimale du gain, c’est-à-dire la stratégie ou les
stratégies rendant l’espérance mathématique du gain maximale.
34 Programmation dynamique

Phase I Phase II Phase III

Décisions Hasard Décisions Hasard Décisions Hasard


autorisées autorisées autorisées
9,848 3  0,7 6,80 5,40 1 0,6 3,60 2,00 2 1
A
9,848 2  0,3 3  0,4
5  0,3
4  0,3 4  0,2
B 12 ,312 7,96 3  0,8 3,60
5  0,7 3,60 3  0,7
12 ,312 6,80 3-0,4
3  0,5 1 0,1 2  0,2
1 0,8 3  0,1 5  0,2
6,80 2,40 1 0,4
8,69 1 0,1 2  0,7 2,40 2  0,4
C 4,42
12 ,312 3  0,1 2  0,2
7  0,3
2  0,3 1 0,2 3  0,3
D
8,69 8,624 1 0,2 4,42 7,96 5  0,4 2,40 2,20 5  0,1

x1 y1 x2 y2 x3 y3 x4
Figure 2.4 : Graphe du jeu et recherche des stratégies optimales

Pour traiter ce problème par la programmation dynamique nous considérons 3 variables


𝑦1 , 𝑦2 , 𝑦3 qui peuvent être égales à A, B, C ou D et représentent une décision du joueur dans
les phases successives I, II, III. Appelons 𝑥1 , 𝑥2 , 𝑥3 , 𝑥4 les variables de position qui peuvent
être égales à A, B, C, D au début des phases I, II et III et à la fin de la phase III.
Ce problème constitue un cas du processus D.H (avec air = 0  i) non stationnaire.
Résolution
PHASE III : Appelons Z3 (x 3 , y 3 ) l’espérance mathématique du gain quand, étant en 𝑥3 , on

décide d’aller en 𝑦3 . Cette quantité ne dépend que de 𝑦3 et l’on a :


Z3 (A, A) = (2)(1) = 2
Z3 (A, B)  Z3 (B, B) = (5)(0,3) + 3.0,7 = 3,6
Z3 (A, C)  Z3 (B, C)  Z3 (C, C)  Z3 (D, C) = (2)( 0,2) + (3)( 0,4) + (2)( 0,4) = 2,4
Z3 (B, D)  Z3 (C, D)  Z3 (D, D) = (1)( 0,4) + (2)(0,2) + (3)( 0,3) + (5)( 0,1) = 2,2
En appelant 𝑓3 (𝑥3 ) l’espérance mathématique maximale quand on est en 𝑥3 , il vient :
𝑓3 (𝐴) = 3,6 avec 𝑦3 = B ; 𝑓3 (𝐶) = 2,4 avec 𝑦3 = C
𝑓3 (𝐵) = 3,6 avec 𝑦3 = B ; 𝑓3 (𝐷) = 2,4 avec 𝑦3 = C
PHASES III ET II ENSEMBLE : Appelons Z2 (x 2 , y 2 ) l’espérance mathématique du gain
pour les phases III et II réunies quand on est en 𝑥2 au début de la phase II. Nous appliquons le
35 Programmation dynamique

théorème d’optimalité en faisant la somme des espérances mathématiques du gain en phase II


et du gain maximal en Phase III pour les valeurs considérées de 𝑥2 , 𝑦2 et 𝑥3 .
Z2 (A, A)  Z2 (B, A) = (1 + 3,6)(0,6) + (3 + 3,6)(0,4) = 5,40
Z2 (A, B)  Z2 (B, B)  Z2 (C, B) = (4 + 3,6)(0,2) + (3 + 3,6)(0,8) = 6,80
Z2 (A, C)  Z2 (C, C)  Z2 (D, C) = (3 + 3,6)( 0,1) + (2 + 2,4)(0,7) + (1 + 2,4)(0,2) = 4,42
Z3 (B, D) =(1 + 3,6)(0,1) + (5 + 3,6)(0,2) + (7 + 2,4)(0,3) + (5 + 2,4)(0,4) = 7,96
En appelant f3, 2(x2) l’espérance mathématique maximale quand on est en x2, il vient :
f3, 2(A) = 6,80 avec y2 = B ; f3, 2(C) = 6,80 avec y2 = B
f3, 2(B) = 7,96 avec y2 = D ; f3, 2(D) = 4,42 avec y2 = C
PHASE III, II ET I ENSEMBLE : Appelons Z1 (x1 , y1 ) l’espérance mathématique du gain
pour les phases III, II et I réunies quand on est en x1 au début de la phase I. En appliquant le
théorème d’optimalité il vient :
Z1 (A, A)  Z1 (B, A) = (3 + 6,80)(0,7) + (2 + 7,96)(0,3) = 9,848
Z1 (B, B)  Z1 (C, B) = (4 + 6,80)(0,3) + (5 + 7,96)(0,7) = 12,312
Z1 (A, C)  Z1 (D, C) = (1+7,96)(0,8) + (1 + 6,80)(0,1) + (3 + 4,42)(0,1) = 8,69
Z1 (B, D)  Z1 (C, D)  Z1 (D, D) =(3 + 6,8)(0,5) + (2 + 6,8)(0,3) + (1 + 4,42)(0,2) = 8,624
On aura finalement, pour les différentes valeurs de 𝑦1 , en appelant Fmax ( x1 ) la valeur maximale

en :
*
𝑥1 = A, Fmax(A) = 9,848 avec y1 = A ;
*
𝑥1 = B, Fmax(B) = 12,312 avec y1 = B ;
*
𝑥1 = C, Fmax(C) = 12,312 avec y1 = B ;
*
𝑥1 = D, Fmax(D) = 8,690 avec y1 = C.

Stratégies optimales
En phase I, si :
𝑥1 = A, prendre 𝑦1 = A ;
𝑥1 = B, prendre 𝑦1 = B ;
𝑥1 = C, prendre 𝑦1 = B ;
𝑥1 = D, prendre 𝑦1 = C
En phase II, si :
𝑥2 = A, prendre 𝑦2 = B ;
36 Programmation dynamique

𝑥2 = B, prendre 𝑦2 = D ;
𝑥2 = C, prendre 𝑦2 = B ;
𝑥2 = D, prendre 𝑦2 = C.
En phase III, si :
𝑥3 = A, prendre 𝑦3 = B ;
𝑥3 = B, prendre 𝑦3 = B ;
𝑥3 = C, prendre 𝑦3 = C ;
𝑥3 = D, prendre 𝑦3 = C.
Ainsi en répétant le jeu un nombre de fois suffisant on obtiendrait les valeurs maximales
obtenues comme valeurs moyennes si on appliquait les stratégies optimales définies ci-dessus.
On pourrait admettre que pour 100 parties les valeurs moyennes obtenues seront peu écartées
de celles correspondant au calcul. Nous présentons sur la figure 3.5 les stratégies optimales
trouvées ci-dessus.

PHASE I PHASE II PHASE III

DECISION HASARD DECISION HASARD DECISION HASARD


9,848 6,80 5,40 3,6 2,0
A 9,848 0

7,96 3,6
6,80
B 12 ,312 12 ,312 3,6 0

8,690 4,42 2,4 2,4


C 12 ,312 6,80 0

D 8,690 8,624 4,42 7,96 2,4 2,2 0

x1 y1 x2 y2 x3 y3 x4
Figure 2.5 : Présentation des stratégies optimales

2. Un problème de réapprovisionnement
Un article est réapprovisionné tous les trois mois et on se préoccupe de la gestion
annuelle. Le stock initial est nul. La demande trimestrielle 𝑢𝑖 pour un trimestre i (i = 1, 2, 3, 4)
est aléatoire et sa loi de probabilité  (ui ) est la même pour chacun des quatre trimestres. Le
coût de stockage d’un article par trimestre est C1. Lorsque le stock est insuffisant pour faire face
37 Programmation dynamique

à la demande (situation de pénurie) il y a des ventes perdues et il en résulte un préjudice évalué


à C2 par article. D’autre part, pour différentes raisons on ne peut dépasser un stock égal à S.
Introduisons les notations suivantes :
𝑆𝑖 : stock à la fin du trimestre i – 1 (avant le réapprovisionnement 𝑎𝑖 ) ;
𝜎𝑖 : stock au début du trimestre i (après le réapprovisionnement ai) ;
𝑎𝑖 = 𝜎𝑖 − 𝑆𝑖 : réapprovisionnement au début du trimestre i ;
𝑢𝑖 : demande aléatoire(1) dans le trimestre i.
Nous allons montrer comment on obtient la valeur minimale de l’espérance mathématique
du coût total de stockage et pénurie pour l’année en utilisant la programmation dynamique.
Nous supposons que la demande 𝑢𝑖 peut être de 0, 1, 2 ou 3 articles et que le stock ne doit
jamais dépasser 3 articles. Numériquement C1 = 4, C2 = 12. La loi de probabilité 𝜑(𝑢𝑖 ) de la
demande 𝑢𝑖 est donnée dans le tableau 3.1 ci-après :
Tableau 2.1 : Distribution de la demande ui
𝑢𝑖 0 1 2 3 >3
𝜑(𝑢𝑖 ) 0,2 0,3 0,4 0,1 0
Probabilité cumulée 0,2 0,5 0,9 1,0 1
Φ(𝑢𝑖 )

A chaque trimestre deux situations sont possibles et représentées par les figures 3.6 a et 3.6 b
ci-après.
𝜎𝑖 i
𝑎𝑖 𝑢𝑖 𝑎𝑖 𝑢𝑖

𝑆𝑖 𝑆𝑖+1 = 𝜎𝑖 − 𝑢𝑖 Si
Si 0 0 𝑆𝑖+1 = 0

𝑢𝑖 – 𝜎𝑖
Situation (a) : pas de pénurie 𝝈𝒊 ≥ 𝒖𝒊

Situation (b) : pénurie 𝝈𝒊 < 𝒖𝒊


Figure 2.6

 Situation (a) : ui   i (4.1)

(1)
On ne sait pas à l’avance à quelle date du trimestre les articles seront demandés, et on suppose que la probabilité
d’une demande un certain jour j de ce trimestre est la même que pour tout autre jour.
38 Programmation dynamique

Alors S i 1   i  ui  S i  ai  ui : il n’y a pas de pénurie.

 u 
Le coût moyen pour le trimestre i est donc C1   i  i  (4.2)
 2
si la demande est ui .

 Situation (b) : 𝑢𝑖 > 𝜎𝑖 (4.3)


Alors S i 1  0 : il y a pénurie.

1  i2
Le coût moyen pour le trimestre i est C1  C 2 (ui   i ) (4.4)
2 ui

si la demande est ui .
Le problème est représenté pour les 4 trimestres de l’année par le graphe de la figure 2.7.
Il s’agit d’un processus D.H stationnaire tant du point de vue des probabilités de transition 𝑝𝑖𝑗
qu’en ce qui concerne les valeurs de transition 𝑅𝑖𝑗 représentant les coûts moyens de stockage
et de pénurie. Ces coûts sont déterminés sur la figure 3.7 à l’aide des formules (4.2) et (4.4).
Les contraintes suivantes interviennent :
Si   i  S (4.5)

Soit S i  ai  S i  S (4.6)

Ou encore 0  ai  S  S i (4.7)
Représentation du problème par un graphe

S1 σ1 S2 σ2 a S3 σ3 S4 σ4
3 29,29 22,80 22,80 16,22 16,22
29,29 9,20
b

25,88 19,41 12,94 6,47


2 c
25,88 19,41 12,94 6,47
f
e d
h
28,48 22,01 i 15,54 9,07
1 g
25,88 19,41 12,94 6,47
j
k

m
0 n
25,88 36,21 19,41 29,74 o 12,94 23,27 6,47 16,80
p
DECISION HASARD DECISION HASARD DECISION DECISION
HASARD

1er Trimestre 2ème Trimestre 3ème Trimestre 4ème Trime


Figure 2.7
39 Programmation dynamique

Prenons une colonne des arcs de hasard et nommons-les de haut en bas a, b, c, d, e, f, g, h, i, j,


k, l, m, n, o et p. On associe à chaque arc trois valeurs désignant successivement la valeur de la
demande 𝑢𝑖 , la valeur de transition associée et la probabilité relative à la valeur de la demande
indiquée. Ces valeurs sont données ci-dessous à coté de chaque arc :
a : 𝑢𝑖 = 0 – 12 – 0,2 ; e : 𝑢𝑖 = 0 – 8 – 0,2 ; i : 𝑢𝑖 = 0 – 4 – 0,2
b : 𝑢𝑖 = 1 – 10 – 0,3 ; f : 𝑢𝑖 = 1 – 6 – 0,3 ; j : 𝑢𝑖 = 1 – 2 – 0,3
c : 𝑢𝑖 = 2 – 8 – 0,4 ; g : 𝑢𝑖 = 2 – 4 – 0,4 ; k : 𝑢𝑖 = 2 – 13 – 0,4
d : 𝑢𝑖 = 3 – 6 – 0,1 ; h : 𝑢𝑖 = 3 – 14,67 – 0,1 ;  : 𝑢𝑖 = 3 – 24,67 – 0,1
m : 𝑢𝑖 = 0 – 0 – 0,2 ;
n : 𝑢𝑖 = 1 – 12 – 0,3 ;
o : 𝑢𝑖 = 2 – 24 – 0,4
p : 𝑢𝑖 = 3 – 36 – 0,1
L’espérance mathématique du coût du stock pour un trimestre i, en tenant compte des
probabilités des situations (a) et (b) est :


σ i 1
u    1  σ i2  
Z(σ i )   C1  σ i  i   u i     C1    C 2 u i  σ i  u i  (4.8)
u 0 
i
2 u σ
i i  2  ui  
Nous allons évaluer successivement l’optimum pour le trimestre 4, puis pour les
trimestres 4 et 3 ensemble, puis 4, 3, 2 et enfin 4, 3, 2 et 1 ensemble. Rappelons que dans le cas
aléatoire l’optimisation doit obligatoirement remonter le temps (c’est-à-dire doit aller du futur
au passé).
Avec les valeurs numériques précisées ci-dessus et en tenant compte du fait que tous les
trimestres ont la même loi de probabilité vis-à-vis des demandes, on posera :


σ i 1
u  3
 σ i2 
Z(σ i )   4 σ i  i   u i     2  12 u i  σ i  u i  (4.9)
u 0 
i
2 u σ
i i  ui 
Résolution
Trimestre 4 : Appelons f 4 (S4 ) le coût minimal pour le trimestre 4 en tenant compte du fait

que ce coût minimal dépend de S4. Alors f 4 (S 4 )  min Z(σ 4 ) .


S4  σ 4  3

On a successivement :
3
Z(0)  12u  u .  12(1)(0.3)  (2)(0.4)  (3)(0.1)  16.8
u4  0
4 4

3
2 
Z(1)  4   0     12u 4  1. u 4   (4)(0.2)  (2)(0.3)  (13)(0.4)  ( )(0.1)  9.07
74
ui  1  u 4  3
40 Programmation dynamique

1
 u  3
8 
Z(2)   4 2  4   u 4      12u 4  2 u 4   (8)(0.2)  (6)(0.3)  (4)(0.4)
u4 0  2 u 4  2 u 4 
44
( )(0.1)  6.47
3
2
 u  3
18 
Z(3)   4 3  4   u 4      12u 4  3 u 4 
u4 0  2 u 4  3 u 4 
 (12)(0.2)  (10)(0.3)  (8)(0.4)  (6)(0.1)  9.20

A partir des valeurs Z(0) , Z(1) , Z(2) et Z(3) ci-dessus, on évalue f4(0), f4(1), f4(2) et f4(3)
de la manière suivante :
f4(0) = Min Z(σ 4 ) = Min [ Z(0) , Z(1) , Z(2) , Z(3) ] = Z(2) = 6,47
0  σ4  3

f4(1) = Min Z(σ 4 ) = Min [ Z(1) , Z(2) , Z(3) ] = Z(2) = 6,47


1  σ4  3

f4(2) = Min Z(σ 4 ) = Min [ Z(2) , Z(3) ] = Z(2) = 6,47


2  σ4  3

f4(3) = Min Z(σ 4 ) = Z(3) = 9,20


σ4  3

Appelons v 4 ( 3 ) l’espérance mathématique du coût pour le quatrième trimestre en tenant

compte de toutes les valeurs possibles de S4, lesquelles dépendent de 3.

 3  u 3 si u 3   3
S4  
0 si u 3   3
 S 4  max  3  u3 , 0 (4.10)
3
v4 ( 3 )  f
u3  0
4 ( S ) (u )
4 3 (4.11)
S 4  max 3 u3 , 0 

3
v4 ( 3  0)  f 4 ( S ) (u )  f 4 (0) (0)   (1)   (2)   (3)  6.47  1  6.47
4 3
u3  0
S 4  max0 u3 , 0 

3
v4 ( 3  1)   f 4 ( S 4 ) (u3 )  f 4 (1) (0)  f 4 (0) (1)   (2)   (3)
u3  0
S 4  max1u3 , 0 

 (6.47)(0.2)  (6.47)(0.8)  6.47


3
v4 ( 3  2)   f 4 ( S 4 ) (u3 )  f 4 (2) (0)  f 4 (1) (1)  f 4 (0) (2)   (3)
u3  0
S 4  max2 u3 , 0 

 (6.47)(0.2)  (6.47)(0.3)  (6.47)(0.5)  6.47


41 Programmation dynamique

3
v 4 ( 3  3)  f
u3  0
4 ( S ) (u )  f 4 (3) (0)  f 4 (2) (1)  f 4 (1) (2)  f 4 (0) (3)
4 3

S 4  max3u3 , 0 

 (9.20)(0.2)  (6.47)(0.3)  (6.47)(0.4)  (6.47)(0.1)  (9.20)(0.2)  (6.47)(0.8)  7.02

Trimestres 4 et 3 ensembles : Appelons f 4, 3 (S3 ) le coût minimal pour les trimestres 4 et 3

ensembles. On a : f 4, 3 (S3 )  Min Z(σ 3 )  v 4 (σ 3 )


S3  σ 3  3

Etant donné qu’il s’agit d’un processus stationnaire : Z(σ i )  Z(σ j ) i  j, alors :

Z(0)  v 4 (0) = 16,8 + 6,47 = 23,27


Z(1)  v 4 (1) = 9,07 + 6,47 = 15,54
Z(2)  v 4 (2) = 6,47 + 6,47 = 12,94
Z(3)  v 4 (3) = 9,20 + 7,02 = 16,22

f4,3(0) = Min Z(σ 3 )  v 4 (σ 3 )= 12,94 avec σ 3 = 2


*
0  σ3  3

f4,3(1) = Min Z(σ 3 )  v 4 (σ 3 ) = 12,94 avec σ 3 = 2


*
1  σ3  3

f4,3(2) = Min Z(σ 3 )  v 4 (σ 3 ) = 12,94 avec σ 3 = 2


*
2  σ3  3

f4,3(3) = Min Z(σ 3 )  v 4 (σ 3 )= 16,22 avec σ 3 = 3


*
σ3  3

S3 = max [2 – u2, 0] (4.12)


3
v4,3 ( 2 )  f
u2 0
4,3 ( S ) (u )
3 2
(4.13)
S3  max 2 u 2 , 0 

v 4, 3 (σ 2  0) = f4,3(0)  (1) = 12,94

v 4, 3 (σ 2  1)  f 4,3 (1) (0)  f 4,3 (0) (1)   (2)   (3)  (12.94)(0.2)  (12.94)(0.8)  12.94

v 4, 3 (σ 2  2)  f 4,3 (2) (0)  f 4,3 (1) (1)  f 4,3 (0) (2)   (3)
 (12.94)(0.2)  (12.94)(0.3)  (12.94)(0.5)  12.94

v 4, 3 (σ3  3)  f 4,3 (3) (0)  f 4,3 (2) (1)  f 4,3 (1) (2)  f 4,3 (0) (3)
 (16.22)(0.2)  (12.94)(0.8)  13.60

Trimestres 4, 3 et 2 ensembles : Appelons f 4, 3, 2 (S2 ) le coût minimal pour les trimestres 4, 3


et 2 ensembles.
42 Programmation dynamique

On a : f 4, 3, 2 (S 2 )  Min Z(σ 2 )  v 4, 3 (σ 2 )
S2  σ 2  3

Z(0)  v 4, 3 (0) = 16,8 + 12,94 = 29,74

Z(1)  v 4, 3 (1) = 9,07 + 12,94 = 22,01

Z(2)  v 4, 3 (2) = 6,47 + 12,94 = 19,41

Z(3)  v 4, 3 (3) = 9,20 + 13,60 = 22,80


D’où :

𝑓4,3,2 (0) = Min Z(σ 2 )  v 4, 3 (σ 2 ) = 19,41 avec σ 2 = 2


*
0  σ2  3

𝑓4,3,2 (1) = Min Z(σ 2 )  v 4, 3 (σ 2 ) = 19,41 avec σ 2 = 2


*
1  σ2  3

𝑓4,3,2 (2) = Min Z(σ 2 )  v 4, 3 (σ 2 ) = 19,41 avec σ 2 = 2


*
2  σ2  3

𝑓4,3,2 (3) = Min Z(σ 2 )  v 4, 3 (σ 2 )= 22,80 avec σ 2 = 3


*
3  σ2  3

Appelons v 4, 3, 2 (σ1 ) l’espérance mathématique du coût pour les trimestres 4, 3 et 2 ensembles

en tenant compte de toutes les valeurs de S2, lesquelles dépendent de 1.


S2 = max [1 – u1, 0] (4.14)
3
v4,3, 2 ( 1 )   f 4,3, 2 ( S 2 ) (u1 ) (4.15)
u1 0
S 2  max 1 u1 ? 0 

v 4, 3, 2 (σ1  0)  f 4,3,2 (0) (0)   (1)   (2)   (3)  f 4,3,2 (0)  19.41

v 4, 3, 2 (σ 2  1)  f 4,3,2 (1) (0)  f 4,3,2 (0) (1)   (2)   (3)  (19.41)(0.2)  (19.41)(0.8)  19.41

v4,3,2 ( 1  3)  f 4,3,2 (3) (0)  f 4,3,2 (2) (1)  f 4,3,2 (1) (2)  f 4,3,2 (0) (3)
 (22.80)(0.2)  (19.41)(0.8)  20.09

Trimestres 4, 3, 2 et 1 ensemble : Appelons f 4, 3, 2,1 (S1 ) le coût minimal pour les trimestres 4,
3, 2 et 1 ensemble. On a : f 4, 3, 2,1 (S1 )  Min Z(σ1 )  v 4, 3, 2 (σ1 )
S1  σ1  3

Z(0)  v 4, 3, 2 (0) = 16,8 + 19,41 = 36,21

Z(1)  v 4, 3, 2 (1) = 9,07 + 19,41 = 28,48

Z(2)  v 4, 3, 2 (2) = 6,47 + 19,41 = 25,88

Z(3)  v 4, 3, 2 (3) = 9,20 + 20,09 = 29,89


43 Programmation dynamique

Alors :

𝑓4,3,2,1 (0) = Min Z(σ1 )  v 4, 3, 2 (σ1 ) = 25,88 avec σ1 = 2


*
0  σ1  3

𝑓4,3,2,1 (1) = Min Z(σ1 )  v 4, 3, 2 (σ1 ) = 25,88 avec σ1 = 2


*
1  σ1  3

𝑓4,3,2,1 (2) = Min Z(σ1 )  v 4, 3, 2 (σ1 )= 25,88 avec σ1 = 2


*
2  σ1  3

𝑓4,3,2,1 (3) = Min Z(σ1 )  v 4, 3, 2 (σ1 ) = 29,89 avec σ1 = 3


*
σ1  3

Finalement, puisque S1 = 0 est imposé F* = f4,3,2,1(0) = 25,88 avec la stratégie suivante :

Trimestre 1 : S1 = 0, σ1 = 2, a 1 = 2
* *

Trimestre 2 : si S2 = 0, prendre σ 2 = 2, d’où a 2 = 2


* *

Si S2 = 1, prendre σ 2 = 2, d’où a 2 = 1
* *

Si S2 = 2, prendre σ 2 = 2, d’où a 2 = 0
* *

Si S2 = 3, prendre σ 2 = 3, d’où a 2 = 0
* *

Trimestre 3 : si S3 = 0, prendre σ 3 = 2, d’où a 3 = 2


* *

Si S3 = 1, prendre σ 3 = 2, d’où a 3 = 1
* *

Si S3 = 2, prendre σ 3 = 2, d’où a 3 = 0
* *

Si S3 = 3, prendre σ 3 = 3, d’où a 3 = 0
* *

Trimestre 4 : si S4 = 0, prendre σ 4 = 2, d’où a 4 = 2


* *

Si S4 = 1, prendre σ 4 = 2, d’où a 4 = 1
* *

Si S4 = 2, prendre σ 4 = 2, d’où a 4 = 0
* *

Si S4 = 3, prendre σ 4 = 3, d’où a 4 = 0
* *

N.B. Si S1 = 0 alors S2 = 3, S3 = 3 et S4 = 3 ne peuvent être réalisés avec la stratégie qui vient


d’être choisie.
La figure 2.8 ci-dessous donne un exemple d’une suite de décisions optimales
correspondant à des demandes : 𝑢1 = 1, 𝑢2 = 3, 𝑢3 = 0, 𝑢4 = 1
44 Programmation dynamique

3
1 2 3 S4   4
2

1 S5
S2

S1 0 S3

Figure 2.8

Si au début du 2ème trimestre on avait su que 𝑢2 = 3 on aurait évidemment pris 𝜎2 = 3. Mais,


avec l’information dont on disposait la décision 𝜎2 = 2 est la meilleure en moyenne.
Il y a lieu de remarquer que le stock devra toujours rester inférieur ou égal à 2. La stratégie
optimale consiste à porter le stock à cette valeur ; ainsi l’espérance mathématique du coût sera
minimale et égale à 25,88 au cours de ces 4 trimestres.
On remarque aussi que dans ce problème les décisions optimales des trimestres 1, 2, 3 et
4 sont les mêmes. Il ne faudrait certes pas généraliser et supposer qu’il en est toujours ainsi ;
ceci dépend de la nature du problème considéré et des conditions aux limites qu’il implique.
Dans le cas déterministe une politique se présente comme un ensemble de N nombres.
Dans le cas aléatoire, si N est le nombre de phases ou périodes, une stratégie se présente comme
un ensemble de N décisions, chacune formée de M valeurs (M pouvant ne pas être constant au
cours du processus). Ainsi, dans le présent problème, une stratégie optimale prend l’aspect
*
suivant, les valeurs indiquées étant celles de a i :

 2   2   2   2 
Si  0
        Si  1
𝑤 ∗ =         si
1 1 1 1
 0 0 0 0  Si  2
       
 0   0   0   0  Si  3

Représentation par un graphe d’un processus séquentiel aléatoire discret


En général un processus séquentiel aléatoire à valeurs discrètes peut être représenté par
un graphe tel que celui de la figure 2.7 qui correspond au problème que nous venons de traiter.
On peut envisager des cas plus compliqués où dans une même phase interviennent plusieurs
fois une prise de décisions et/ou le hasard : c’est la généralisation des processus D.H ou H.D
45 Programmation dynamique

signalée dans la théorie. Il est recommandé de tracer le graphe des changements d’état en vue
de l’établissement du modèle mathématique séquentiel dont le graphe lui-même donne la
structure.
En fait, la représentation à l’aide d’un graphe, lorsqu’elle est matériellement possible,
s’avère particulièrement commode pour mener les calculs et traduire de manière concrète les
formules (14), (15), (16), (17), (18), (19), (20) et (21) vues dans la théorie de ce chapitre. Il
suffit de ramener en chaque point l’espérance mathématique des valeurs totales ultérieures s’il
s’agit d’un point de hasard et la valeur optimale s’il s’agit d’un point de décision. On commence
par porter sur les arcs du hasard les valeurs de transition et les probabilités qui leur sont
associées, ceci pour toutes les hypothèses intervenant dans le problème. On porte également sur
les arcs de décision les valeurs de transition qui les concernent. Le présent problème ne contient
pas de telles valeurs. Mais on pourrait imaginer des coûts de transport proportionnels au nombre
d’unités approvisionnées. On porte ensuite sur les sommets de la fin de la dernière phase les
valeurs terminales. Dans le présent problème elles sont nulles ; le stock est supposé être cédé
gratuitement, mais on pouvait le revendre dans un autre problème.
Une présentation de la (ou des) stratégies(s) optimales(s) en traits renforcés sur le même
graphe ou graphe identique (figure 2.9 ci-dessous) est, en général, intéressante à observer.

S 1 σ1 S2 σ2 S3 σ3 S4
3 29,29 29,29 22,80 22,80 16,22 16,22 9,20

25,88 19,41 12,94


2 25,88 19,41 12,94 6,47

28,48 22,01 15,54


125,88 19,41 12,94 6,47

0 25,88 36,21 19,41 29,74 12,94 23,27 6,47 16

DECISION HASARD DECISION HASARD DECISION HASARD DECISION

Figure 2.9 : Représentation de la stratégie optimale


46 Programmation dynamique

Les nombres placés dans les colonnes  i donnent les espérances mathématiques ramenées à la
période pour la valeur de  i décidée. Les nombres placés dans les colonnes Si donnent les valeurs
optimales ramenées pour chaque valeur de Si. Sur la figure 2.7 les nombres placés sur les arcs du
hasard donnent dans l’ordre : la demande, la variation du coût et la probabilité de transition.

3. Remplacement d’un ensemble d’équipements


On se préoccupe de la gestion d’un ensemble d’équipements sur une durée de 5 années.
Un équipement peut être ou bien maintenu en service ou bien remplacé chaque année par un
équipement neuf identique. La décision à prendre chaque année est la suivante :
- Remplacer par un neuf : R
- Ne pas remplacer : NR
La courbe de survie est représentée par la figure 3.10 ci-dessous et exprimée dans le
tableau 2.10 ci-après :
Tableau 2.10
(1) (2) (3)
v(n  1)  v(n)
𝑛 𝑣(𝑛) PC (n)  𝑣(𝑛)
v(n  1)
0 1,0 0 1

1 1,0 0
2 0,8 1/5
3 0,5 3/8 0,5

4 0,2 3/5
5 0,1 1/2
≥6 0,0 1 n
0 1 2 3 4 5
Figure 2.10

La colonne (2) du tableau 3.10 exprime la probabilité qu’un équipement soit encore en
état de fonctionner après la date n. La colonne (3) indique la probabilité conditionnelle d’avarie
(taux d’avarie) dans l’intervalle n – 1 à n, cette avarie entraînant nécessairement le
remplacement à la fin de la période.
Le tableau 3.3 ci-dessous donne le coût d’entretien et la valeur de l’équipement à chaque
date n.
47 Programmation dynamique

Il est question de déterminer la stratégie optimale de remplacement de ces équipements


au cours de la période considérée permettant de minimiser l’espérance mathématique du coût
de ces équipements.
La gestion de ces équipements peut être décrite par un programme dynamique H.D
représenté par le graphe de la figure 3.1 ci-après. La variable d’état qui décrit à chaque date n
l’état du système est l’âge a de l’équipement. Au début de la période suivante on décide soit de
conserver l’équipement, auquel cas son âge a reste inchangé, soit de le remplacer ; l’âge tombe
alors à 0. Le hasard mène ensuite, soit à l’âge 6 représentant l’avarie, soit à l’âge (a + 1).
Tableau 2.3
Coût Valeur à la
𝑛 d’entretien date 𝑛
0 0 100
1 4 60
2 10 40
3 17 30
4 26 20
5 38 10
≥6 -- 0
48 Programmation dynamique

100 + 75,6
42 ,9 5 28  60
0 = 175,6  100
1 40 1 40
1 1 1
40 40
60 + 105,58
71,6 38 ,9 1 32
1 = 165,58 75 ,6 42 ,9 5 28  60
4/5 60 4/5 60 4/5 60 4/5 60 4/5

40 + 124,15 70 70
86,25 53,25 70 20,625 70 18,75
2 = 164,15  40
96,25 63,25 30,625 8,75
5/8 5/8 5/8 5/8 5/8
17 17 17
80 80 80 80
30 + 134,9
1/ 5 97 1/ 5 64 1/ 5 32 1/ 5 17 8 1/ 5
3 = 164,9
112 ,9 75 42 9
 30

3/8 2/5 26 3/8 2/5 26 3/8 2/5 26 3/8 2/5 3/8 2/5
90 90 90 90
20 + 137,9
100 67 35 26 5
4 = 157,9 3 / 5 3/ 5 85 3/ 5 3/ 5 3/ 5  20
122 ,9 52 20

1/ 2 38 1/ 2 38 1/ 2 38 1/ 2 1/ 2
100 100 100 100
10 + 142,9
5 = 152,9 1 / 2 105 1 / 2 72 1 / 2 40 1 / 2 38 0 1/ 2
 10
132 ,9 95 62 30

1 1 1 1 1

6 Mort 142 ,9 105 72 40 0


HASARD DECISION HASARD DECISION HASARD DECISION HASARD DECISION HASARD

Date 2 Date 3 Date 4


Date 0 Date 1 Date 5
Figure 2.11
49 Programmation dynamique

Après calculs menés directement sur le graphe on constate que la stratégie optimale est la
suivante :

Date Date Date Date Date


Age 1 2 3 4
1 NR NR NR NR
2 NR NR NR NR
3 R R R NR
4 R R R R
5 R R R R
6 R R R R

Cette stratégie optimale est représentée en traits renforcés (rouge) sur le graphe de la
figure 2.11 dans les colonnes de décision.
Remarques
1. L’âge 6 correspond à un équipement avarié et remplacé par un équipement neuf ou à un
équipement ayant atteint l’âge 5 et par conséquent remplacé par un équipement neuf.
2. Après 5 années d’exploitation les équipements sont revendus à leurs valeurs données dans
le tableau 3.3. Ces valeurs sont considérées négativement car on étudie le coût des
équipements. Mais à la date 0 ces valeurs sont considérées positivement car elles fournissent
le coût de leur acquisition.
3. On voit qu’à partir de la date 3 en remontant vers la date 0 une stratégie permanente apparaît.

2.4 Evaluation du risque pour une stratégie optimale


La connaissance de la stratégie optimale peut être utilement complétée dans le cas
aléatoire par la connaissance du pire résultat de cette stratégie, du meilleur résultat de cette
stratégie et enfin de la distribution de probabilité des coûts qui peuvent être obtenus avec cette
stratégie optimale.
Nous illustrons ces calculs complémentaires par un exemple. Reprenons le problème de
gestion de remplacement d’un ensemble d’équipements présenté sur la figure 2.11 ainsi que sa
stratégie optimale. Retraçons le graphe de cette figure en ne conservant que les arcs de décision
optimale et tous les arcs du hasard. Sans nous préoccuper des probabilités des arcs du hasard,
nous considérons le graphe comme celui d’un programme déterministe dont on évaluera
d’abord la valeur minimale (résultat le plus favorable possible de la stratégie optimale, figure
50 Programmation dynamique

2.15), puis la valeur maximale (résultat le plus défavorable possible de la stratégie optimale,
figure 2.16).
Les valeurs indiquées sur la figure 2.15 à la date 0 aux différents états des équipements
constituent les coûts les moins élevés possibles si à cette date on utilise un équipement ayant
l’un des âges indiqués par ces états. De même, les valeurs indiquées sur la figure 2.16 à la date
0 aux différents états des équipements constituent les coûts les plus élevés possibles si à cette
date on utilise un équipement ayant l’un des âges indiqués par ces états.
51 Programmation dynamique

100 + 48
11 16 36 60
0 = 148

60 + 64
4 44 4 7 4 20 4 40
1 = 124
48 11 16 36  60

40 + 81 70
10 54 10 70 34 10 70 3 10 30
2 = 121
44 20  40
64 7

80 80 80 80
30 + 91
17 20
3 = 121
81 54 34 3  30

20 + 101 90 90 90 90
10
4 = 121
44 20  20
91 64

100 100 100 100


10 + 111
5 = 121
101 74 54 30  10

6 111 84 64 40 0
HASARD DECISION HASARD DECISION HASARD DECISION HASARD DECISION HASARD

Date 0 Date 1 Date 2 Date 3 Date 4 Date 5

Figure 2.15 : Résultat le plus favorable de l a stratégie optimale


52 Programmation dynamique

100 + 148
108 44 D   60
0 = 248 A 0 2 A 3 4 E 4
1 1 1 1 1

60 + 208 D3
A1 4 144 4 104 4 40 D  4 0A 4
1 = 268 148 A 1 108 44
3
4  60
E5
A4
4/5 4/5 4/5 4/5 4/5

40 + 208 70
10 144 10 70 104 10 70 40 D 4 10 0
2 = 248
A 2  40
154 115 50 10 D 4 A5
A2
5/8 5/8 5/8 5/8 5/8
80 80 80 80
30 + 208 74 17 0
3 = 238 1/ 5 178 1/ 5 1/ 5 A3 1/ 5 17 1/ 5  30
D5
2/5 2/5 2/5 2/5 2/5
20 + 208 3/8 90 3/8 90 3/8 90 3/8 90 3/8
4 = 228
3/5 3/5 3/5 3/5 3/5  20
188

1/ 2 100 1/ 2 1/ 2 1/ 2 1/ 2
10 + 208 100 100 100
1/ 2 1/ 2 1/ 2 1/ 2 1/ 2
5 = 218
198  10

1 1 1 1 1
D2 C3 E4
6 208 144 104 40 B5 0
HASARD DECISION HASARD DECISION HASARD DECISION HASARD DECISION HASARD

Date 0 Date 1 Date 2 Date 3 Date 4 Date 5

Figure 2.16 : Résultat le plus défavorable de la stratégie optimale.


53 Programmation dynamique

Considérons un équipement neuf à la date 0 et décelons tous les chemins partant de cet
équipement neuf à la date 0 jusqu’à la date 5. Déterminons ensuite le coût de chaque chemin et
la probabilité correspondante. Celle-ci est, d’après le théorème de multiplication, le produit des
probabilités attachées à chaque arc « hasard » faisant partie du chemin. S’il y a plusieurs
chemins de même coût partant de cette même origine on fera la somme des probabilités de ces
chemins.
Sur la figure 2.16 nous avons désigné par des lettres indicées tous les sommets se trouvant
sur les différents chemins partant de l’origine « équipement neuf » à la date 0. Ainsi dans le
tableau ci-dessous nous indiquons ces chemins, leurs coûts et probabilités correspondants.
Tableau 2.6
Chemins Coûts Probabilités
A0 – A1 – A 1 – A2 – A 2 – A3 – A 3 100 + 4 + 10 + 70 + 4 – 40 = 1x
4 5 4 4
x x 1 x  = 0,4
5 8 5 10
– A4 – A 4 – A5 148
A0 – A1 – A 1 – A2 – A 2 – A3 – A 3 100 + 4 + 10 + 70 + 4 – 00 = 1x
4 5 1 1
x x 1 x  = 0,1
5 8 5 10
– A4 – A 4 – B5 188
A0 – A1 – A 1 – A2 – A 2 – C3 – A 3 4 3 4 6
x x1x 
100 + 4 + 10 + 100 + 4 – 40 1x =
5 8 5 25
– A4 – A 4 – A5 = 178
0,24
A0 – A1 – A 1 – A2 – A 2 – C3 – A 3 4 3 1 3
x x1x  =
100 + 4 + 10 + 100 + 4 + 0 = 1x
5 8 5 50
– A4 – A 4 – B5 218
0,06
A0 – A1 – A 1 – D2 – D 2 – D3 – D 3 100 + 4 + 100 + 4 + 10 – 30 1x
1 4 5 1
x1x x  = 0,10
5 5 8 10
– D4 – D 4 – D5 = 188
A0 – A1 – A 1 – D2 – D 2 – D3 – D 3 1 4 3 3
x1x x  =
100 + 4 + 100 + 4 + 10 + 0 = 1x
5 5 8 50
– D4 – D 4 – B5 218
0,06
A0 – A1 – A 1 – D2 – D 2 – D3 – D 3 100 + 4 + 100 + 4 + 100 – 1x
1 1
x1x x1 
1
= 0,04
5 5 25
– E4 – E 4 – E5 60 = 248

Ainsi la distribution des probabilités des coûts pour un équipement neuf à la date 0 est
reprise dans le tableau ci-après :
54 Programmation dynamique

Tableau 2.7

Coût Probabilité Probabilité


C Cumulée
148 0,40 0,40
178 0,24 0,64
188 0,20 = 0,1 + 0,1 0,84
218 0,12 = 0,06 + 0,06 0,96
248 0,04 1,00

On peut trouver comme ci-dessus la distribution des probabilités pour chacun des états de
l’équipement à la date 0. Pour un équipement neuf à la date 0 la probabilité d’obtenir un coût
supérieur à 188 est de 0,16.
En utilisant les lois de distribution pour les divers états initiaux considérés, on peut être
conduit à ne pas nécessairement accepter de débuter avec un matériel dont l’âge correspond à
l’optimum optimorum (optimum des espérances mathématiques des états initiaux, figure 2.11),
mais à tenir compte du risque de dépassement d’un coût critique.
55 Programmation dynamique

Références bibliographies

1. Colomb P., « Gestion des stocks et des pièces de rechange », Editions Eyrolles, Paris,
1948.
2. Desbazeille G., « Exercices et problèmes de recherche opérationnelle », Dunod, Paris,
1976.
3. Gavaut L. ; Lauret A., « Techniques et pratique de la gestion des stocks », 3ème édition,
1985.
4. Janssen J., « Théorie des équipements », notes de cours.
5. Kaufmann A., « Méthodes et modèles de la recherche opérationnelle », Tome 1, Dunod,
Paris, 1972.
6. Kaufmann A., « Méthodes et modèles de la recherche opérationnelle », Tome II, Dunod,
Paris, 1968

Vous aimerez peut-être aussi