Vous êtes sur la page 1sur 24

Institut UCAM-ICAM

Formation Continue
Cours de Recherche Opérationnelle
Septembre 2022

Contenu du Cours:

chapitre 1: Programmation linéaire en continu


chapitre 2: Programmation linéaire en nombres entiers
chapitre 3: Programmation non linéaire
chapitre 4: Programmation dynamique

1
Introduction Générale

La recherche opérationnelle est née lors de la Deuxième Guerre mondiale des efforts conjugués
d’un groupe d’éminents mathématiciens (von Neumann, Metropolis, Wald, Wiener, Dantzing
Bellman) de contribuer à leur manière à la victoire alliée. C’est ainsi qu’il a été créé une nou-
velle méthodologie quantitative d’aide à la décision pouvant être caractérisée par les mots-clés:
modélisation, simulation et optimisation.
La recherche opérationnelle repousse les frontières de son domaine initial, pour s’étendre à la
modélisation et à l’optimisation de systèmes dans des domaines les plus divers, allant de la
conception et la configuration à l’exploitation des systèmes techniques complexes (réseaux de
communication, systèmes informatiques), de la gestion stratégique d’investissements à celle
de la chaîne logistique (transports, production, stocks). La recherche opérationnelle fait égale-
ment son apparition dans des domaines tels que la santé et l’instruction publiques, la voirie,
le ramassage et la distribution de courrier, la production et le transport d’énergie, les télé-
communications, mais aussi dans les banques et les assurances. De pair avec cette éclosion
d’applications, les méthodes et fondements théoriques de la recherche opérationnelle contin-
uent à se développer dans une symbiose féconde avec d’autres domaines des mathématiques
appliquées.
La recherche opérationnelle apporte ainsi une méthodologie de modélisation et une collection
d’outils mathématiques devenus indispensables pour tout ingénieur, manager ou économiste.
En effet, le pouvoir d’expression de ses modèles, c’est-à-dire leur capacité à représenter en
termes mathématiques les systèmes les plus complexes, et l’efficacité de ses algorithmes sont
la clé de l’utilisation des moyens informatiques modernes dans l’aide à la décision.
Ce cours est un guide en qualité d’introduction aux principales techniques et applications de
la recherche opérationnelle.

2
Chapitre 1: Programmation linéaire en continu

Ce chapitre présente un premier outil de la recherche opérationnelle. La programmation


linéaire est à l’origine du développement moderne de la programmation mathématique et
s’applique dans les problèmes d’allocution de ressources pour une production optimale en
industrie et dans le commerce.

0.1 Généralités sur la programmation linéaire


0.1.1 Inégalités linéaires et domaine de solutions d’un système d’inégalités
linéaires
Soit
a1 x1 + a2 x2 + b ≥ 0 (1)
une inégalité linéaire à deux variables x1 et x2 . Si les grandeurs x1 et x2 sont considérées
en tant que coordonnées des points du plan, alors l’ensemble des points du plan dont les
coordonnées satisfont à l’inégalité (1) est représenté par un demi-plan.
Soit le système d’inégalités


 a11 x1 + a12 x2 + b1 ≥ 0,

a21 x1 + a22 x2 + b2 ≥ 0,
(2)
 .............................


am1 x1 + am2 x2 + bm ≥ 0,

où m est un nombre fini: c’est l’intersection d’un nombre fini de plans qui forme un domaine
polygonal D. Ce domaine est appelé domaine de solutions du système d’inégalités (3). Il
n’est pas obligatoire que le domaine D soit borné, il peut être non borné ou même vide.
Le dernier cas a lieu lorsque le système d’inégalités (3) est contradictoire. Le système peut
aussi contenir des inégalités superflues qui n’ont de points communs avec le domaine D, ces
inégalités peuvent être éliminées.
Une propriété importante du domaine de solutions réside dans le fait qu’il est convexe, c’est-
à-dire qu’il comporte le segment entier qui relie deux de ses points. La droite qui contient au
moins un point commun avec le domaine considéré de façon que le domaine entier se trouve
d’un seul côté de cette droite est appelé droite d’appui par rapport à ce domaine.
Une interprétation géométrique analogue peut être donnée à un système d’inégalités contenant
trois variables: 

 a11 x1 + a12 x2 + a13 x3 + b1 ≥ 0,

a21 x1 + a22 x2 + a23 x3 + b2 ≥ 0,
(3)

 ......................................

am1 x1 + am2 x2 + am3 x3 + bm ≥ 0,
Dans ce cas, chacune des inégalités est satisfaite dans l’un des demi-espaces définis par le
plan correspondant. Le système d’inégalités (3) représente l’intersection de demi-espaces en
définissant de cette facçon de domaine polyédral de ses solutions.

3
Exemple 0.1.1. Représenter graphiquement puis déterminer le domaine de solutions du sys-
tème d’inégalités: 

 x1 − 1 ≥ 0

x2 − 1 ≥ 0

 x + x2 − 3 ≥ 0
 1
−6x1 − 7x2 + 42 ≥ 0
Exercice 0.1.1.
On considère le système d’inégalités ci-dessous:


 3x1 − x2 ≥ 0


 x1 − x2 ≤ 0
2x1 + x2 ≤ 6 (4)



 x ≤2
 1
3x1 − x2 ≥ −4

a) Justifier par une représentation graphique que les cinq inégalités du système (4) sont véri-
fiées par l’ensemble des points du plans contenus à l’intérieur d’un triangle AOB que l’on
précisera.
b) Préciser une droite d’appui par rapport à ce triangle.
a) Trouver le domaine de solutions du système d’inégalités suivant:


 x1 ≥ 0


 x2 ≥ 0
x3 ≥ 0 (5)



 x + x2 − 1 ≤ 0
 1
3x1 + x2 − 3x3 ≥ 0

b) Quelle est la nature du domaine de solutions du système (5).

0.1.2 Problème fondamental de la programmation linéaire


Le problème de la programmation linéaire consiste à etudier les méthodes de recherche de
la valeur maximale ou minimale d’une fonction linéaire en présence de certaines contraintes
linéaires.
La fonction dont on cherche la valeur maximale ou minimale est appelée fonction objectif,
tandis que l’ensemble de valeurs des variables qui maximisent ou minimisent cette fonction
définit l’ainsi appelé plan (solution) optimal. Tout autre ensemble de valeurs vérifiant les
contraintes imposées constitue un plan (solution) optimal.
Les contraintes peuvent être données sous forme d’un système de m inégalités linéaires à n
variables: 

 a11 x1 + a12 x2 + a13 x3 + ... + a1n xn ≥ b1 ,

a21 x1 + a22 x2 + a23 x3 + ... + a2n xn ≥ b2 ,
(6)

 ......................................

am1 x1 + am2 x2 + am3 x3 + ... + amn xn ≥ bm .
Parmi les solutions du système (6), on doit trouver celle qui maximise (minimise) la fonction
linéaire (fonction objectif)

L = c1 x1 + c2 x2 + ... + cn xn + c0 .

4
0.1.3 Méthode de résolution en programmation linéaire
Méthode graphique
Dans ce qui suit on montrera la solution géométrique du problème donné, en se limitant à
l’examen d’un système d’inégalités linéaires à deux et à trois variables. Soit en outre donnée
une fonction linéaire L = c1 x1 +c2 x2 +c0 . Il s’agit de trouver dans l’ensemble de points (x1 ; x2 )
situés dans le domaine de solutions du système d’inégalités compatible ceux qui minimisent
(maximisent) la fonction linéaire L = c1 x1 + c2 x2 + c0 .
Pour chaque point du plan, la fonction L prend une valeur fixée L = L1 . L’ensemble de
tous les points de ce genre forme la droite c1 x1 + c2 x2 + c0 = L1 perpendiculaire au vecteur
C(c1 ; c2 ) sortant de l’origine des coordonnées. En translatant notre droite dans le sens positif
du vecteur C, on assiste à une augmentation de la fonction linéaire L = c1 x1 + c2 x2 + c0 ,
tandis que la translation dans le sens inverse entraîne la diminution de cette fonction. On
admet qu’en déplaçant la droite L dans le sens positif du vecteur C, elle rencontre sur son
chemin le premier des sommets du polygone de solutions; dans cette position L1 la droite L
devient une droite d’appui et sur cette droite la fonction L prend la valeur minimale. Si l’on
continue à déplacer la droite L dans le même sens (sens positif), elle passera par un autre
sommet du polygone de solutions en sortant du domaine de solutions et en devenant la droite
d’appui L2 sur laquelle la fonction L atteind son maximum par rapport à toutes les valeurs
de L prises dans le polygone de solutions.
De cette facçon, la minimisation et la maximisation de la fonction linéaire L = c1 x1 +c2 x2 +c0
dans le polygone de solutions sont obtenues aux points d’intersection de ce polygone avec les
droites d’appui L = c1 x1 + c2 x2 + c0 normales au vecteur C(c1 ; c2 ). La droite d’appui peut
rencontrer le polygone de solutions en un point unique (sommet du polygone), ou bien en une
infinité de points (côté du polygone).
D’une façon analogue, une fonction linéaire à trois variables L = c1 x1 + c2 x2 + c3 x3 + c0
prend une valeur constante dans un plan perpendiculaire au vecteur C(c1 ; c2 ; c3 ). Les valeurs
minimum et maximum de cette fonction dans le polyèdre de solutions sont obtenues aux points
de rencontre de ce polyèdre avec les plans d’appui perpendiculaires au vecteur C(c1 ; c2 ; c3 ). Le
plan d’appui peut rencontrer le polyèdre de solutions en un seul point (sommet du polyèdre),
ou en une infinité de points (arêtes ou faces du polyèdre).

Exemple 0.1.2. Résoudre graphiquement les problèmes linéaires suivants:

1. 
max x1 + 2x2
 x1 + 2x2 ≤ 4
s.c 2x1 − 3x2 ≤ 0

x1 ≥ 0, x2 ≥ 0
2.max 2x1 + 2x2
 3x1 − 2x2 ≥ −6
s.c 3x1 + x2 ≥ 3

x1 ≤ 3
3. min
 12x1 + 4x2
 x1 + x2 ≥ 2
s.c x1 ≥ 12 x2 ≤ 4

x1 − x2 ≤ 0

5
Exercice 0.1.2. : Applications aux problèmes industriels
Refaire les deux exemples introductifs da la page 10 du document intitulé “Leçons de RO”.

Méthode du simplexe
Theorème 0.1.1. Un programme linéaire réalisable et de valeur finie atteind sa valeur opti-
male entre autres à l’un des sommets du polyèdre convexe de ses solutions admissibles.
Preuve: Exercice.
Considérons le programme linéaire standard suivant:
minX{C T X
AX = B
(P): s.c
X≥0
où: A est une matrice à m lignes et n colonnes, B est un vecteur colonne à m lignes, C T est
un vecteur ligne à n colonnes, X est le vecteur à n lignes, à déterminer.
La matrice A de taille m × n avec m ≤ n est de rang m pour garantir que les équations ne
sont pas redondantes.
Une base de A est une sous matrice M , formée de m colonnes linéairement indépendantes de
A.
Pour un souci de simplification, on suppose que les colonnes de la matrice M sont après
permutations nécessaires éventuelles, les m premières colonnes de la matrice A de manière à
pouvoir écrire: ( )
AX = [M N ] XM XN = M XM + N XN = B.
Avec la partition correspondante XM XN pour les variables, la solution de base correspondante
à la base M est: X M = M −1 B et on a aussi: X N = 0.
Condition suffisante d’optimalité:

Proposition 0.1.1. Une solution de base X M = M −1 B, X N = 0 pour laquelle CN


T −λT M ≥
M
T M −1 est optimale.
0 avec λTM = CM
Preuve: Exercice.
Remarque 0.1.1. 1) On appelle coûts réduits des variables hors base le vecteur CN T − λT M
M
de composantes suivantes: ∆i = Ci − λM Ai avec Ai ∈ N .
T

2) Le procédé de la méthode du simplexe consiste à effectuer un changement de base pour


obtenir la solution optimale lorsque l’un des coûts réduits est négatif.
3) Il y’ a cycle dans la méthode du simplexe lorsqu’une série de changements de base donnent
des solutions de base de même valeur, avec retour à une base déjà inventoriée.
Pour éviter que tout cycle se produise, Bland a proposé une règle lexicographique servant à
choisir la colonne entrante et la colonne sortante lorsqu’il y’a ambibiguïté d’un changement de
base. Cette règle, qui évite un retour à une base déjà rencontrée consiste à choisir une colonne
entrante de plus petit indice correspondant à un coût réduit négatif, soit:
e = min{k/Ck − λTM Ak < 0}
et à choisir la colonne sortante de plus petit indice:
xt xi
s = min{t/ = min{ /yie > 0}}
yte yie

6
lorsqu’il y’ a plusieurs yte > 0.
La mise en oeuvre de la méthode du simplexe sur ordinateur requiert des raffinements numériques
et de nombreuses astuces informatiques si on veut assurer l’efficacité et la rapidité des calculs.

Exemple 0.1.3. Résoudre par la méthode du simplexe le problème linéaire suivant:

max x1 + 2x2

 −3x1 + 2x2 ≤ 2

−x1 + 2x2 ≤ 4
s.c

 x + x2 ≤ 5
 1
x1 ≥ 0, x2 ≥ 0
Solution:
Le problème équivalent est le suivant:

 min −x1 − 2x2



 −3x1 + 2x2 + x3 = 2

−x1 + 2x2 + x4 = 4
s.c

 x + x2 + x5 = 5
 1
x1 ≥ 0, x2 ≥ 0, x3 , ≥ 0, x4 ≥ 0, x5 ≥ 0
où x3 , x4 , x5 sont appelés variables d’écart.
On a: C T = [−1 − 2], m = 3 et n = 5 (m ≤ n).

• Choix de la base M
: 
1 0 0
M = [A3 A4 A5 ] =  0 1 0 
0 0 1
−1
Cela entraîne que M = M .     
1 0 0 2 2
−1
D’autre part, X M = M B =  0 1 0   4  =  4 .
0 0 1 5 5
On obtient: X 3 = 2, X 4 = 4 et X 5 = 5.
Par ailleurs, X N = 0 ⇒ X 1 = X 2 = 0.

• Calcul des coûts réduits:


λTM = CMT M −1 avec C T = [000]. On obtient:
 M 
( ) 1 0 0 ( )
λTM = 0 0 0  0 1 0  = 0 0 0 et:
0 0 1
  

 ( ) −3

 C1 − λTM A1 = −1 − 0 0 0  −1  = −1 < 0



 1

 2
 C2 − λT A2 = −2 − ( 0 0 0 )  2  = −2 < 0



 M
1
D’après la règle de Bland, l’indice 1 est l’indice de la colonne sortante dans la base M .

• Entrée de la colonne A1 dans la nouvelle base et détermination de la colonne sortante


dans la base M .

7
      
y31 1 0 0 −3 −3
On a: Y1 =  y41  = M −1 A1 =  0 1 0   −1  =  −1 
y51 0 0 1 1 1
c-à-d: y31 = −3, y41 = −1 et y51 = 1.
On retient uniquement y51 car y51 > 0.
Calul de s:
s = min{t/ yxtet = min{ yxiei /yie > 0}} = mint∈{5} {t yXt1t } = min{5} = 5.
Par conséquent, la colonne A1 remplace la colonne A5 pour l’obtention de la nouvelle
base.
 
1 0 −3
• Obtention de la nouvelle base: M ′ = [A3 A4 A1 ] =  0 1 −1 
0 0 1
 
1 0 3
=  0 1 1 .
′−1
Cela entraîne que M
0 0 1
    
1 0 3 2 17

D’autre part, X M = [X 3 X 4 X 1 ] = M B =  0 1 1   4  =  9 .
′−1

0 0 1 5 5
On déduit que: X 3 = 17, X 4 = 9 et X 1 = 5.
De plus, X N = 0 ⇒ X 2 = X 5 = 0.

• Calcul des nouveaux coûts réduits:


λTM ′ = CMT M ′−1 avec C T = [00 − 1]. On obtient:

 M′ 
( ) 1 0 3 ( )
λTM ′ = 0 0 −1  0 1 1  = 0 0 −1 et:
0 0 1
  

 ( ) 2

 − T A = −2 − −1  2  = −1 < 0

 C 2 λ ′ 2 0 0
 M
 1

 ( ) 0

  0 =1>0

 C − λT A =0−
M′ 5 0 0 −1
 5
1
D’après la règle de Bland, l’indice 2 est l’indice de la colonne entrante dans la nouvelle
base.

• Entrée la colonne A2 dans la nouvelle base et détermination de la colonne sortante dans


la base M ′ .       
y32 1 0 3 2 5
On a: Y2 =  y42  = M A2 =  0 1 1   2  =  3 
′−1

y12 0 0 1 1 1
c-à-d: y32 = 5, y42 = 3 et y12 = 1.
On retient les trois coordonnées car elles sont toutes positives.
Calul de s:
s = min{t/ yxtet = min{ yxiei /yie > 0}} = min{t/t = mink∈{3,4,1} { yXk2k }} = min{4} = 4 car

 x3
 y32 = 5
17
x4
 y42 = 3 .
 x1 = 5
y12

8
Par conséquent, la colonne A2 remplace la colonne A4 pour l’obtention de la nouvelle
base.
 
1 2 −3
• Obtention de la nouvelle base: M ∗ = [A3 A2 A1 ] =  0 2 −1 
0 1 1
 
3 −5 4
Cela entraîne que M ∗ = 31  0 1 1 .
−1

0 −1 2
    
3 −5 4 2 2

D’autre part, X M = [X 3 X 2 X 1 ] = M ∗ B = 13  0 1 1   4  =  3 .
−1

0 −1 2 5 2
On déduit que: X 3 = 2, X 2 = 3 et X 1 = 2.
De plus, X N = 0 ⇒ X 4 = X 5 = 0.

• Calcul des nouveaux coûts réduits:


λTM ∗ = CMT M ∗−1 avec C T = [0 − 2 − 1]. On obtient:

∗
M 
( ) 3 −5 4 ( )
λTM ∗ = 31 0 −2 −1  0 1 1  = 13 0 −1 −4 et:
0 −1 2
  

 ( ) 0

 − T A =0− 1 −1 −4  1 = 1 >0

 C 4 λ ∗ 4 0
 M 3 3
0
 

 ( ) 0

 

 C − λT A =0− 1
∗ 0 −1 −4 0  = 43 > 0
 5 M 5 3
1
Le processus s’arrête car les deux coûts réduits sont positifs.
En conclusion:
X 1 = 2, X 2 = 3 , X 3 = 2, X 4 = 0 et X 5 = 0.
max x1 + 2x2 = 2 + 2 × 3 = 8. 2

0.2 Problème duaux


0.2.1 Génralités sur la dualité
A chaque problème linéaire on peut mettre en correspondance un autre problème lié d’une
façon bien déterminée au premier et appelé problème dual.
Ainsi, lorsque le problème initial ou primal (problème I) de programmation linéaire consiste
à minimiser une fonction linéaire L = c1 x1 + c2 x2 + ... + cn xn sous les contraintes suivantes
données sous forme d’inégalités:


 a11 x1 + a12 x2 + a13 x3 + ... + a1n xn ≥ b1 ,

a21 x1 + a22 x2 + a23 x3 + ... + a2n xn ≥ b2 ,

 ......................................

am1 x1 + am2 x2 + am3 x3 + ... + amn xn ≥ bm .

et à condition que xk (k = 1, 2, ..., n) ne soit pas négatif, à ce problème on peut lier un autre
problème (problème I’) appelé problème dual par rapport au problème primal (I) et consiste

9
à maximiser une fonction linéaire T = b1 y1 + b2 y2 + ... + bm ym sous les contraintes:


 a11 y1 + a21 y2 + a31 y3 + ... + am1 ym ≤ c1 ,

a12 y1 + a22 y2 + a32 y3 + ... + am2 ym ≤ c2 ,
 ......................................


a1n y1 + a2n y2 + a3n y3 + ... + amn ym ≤ cn .

yi ≥ 0 (i = 1, 2, 3, ..., m) devant être non négatif.


On remarque que la matrice constituée par les coefficients des variables du problème primal
I:  
a11 a12 ... a1n
 a21 a22 ... a2n 
A=  ...


... ... ...
am1 am2 ... amn
de même que la matrice analogue dans le problème dual I’:
 
a11 a21 ... am1
 a12 a22 ... am2 
A′ = 
 ...

... ... ... 
a1n a2n ... amn

sont obtenues l’une de l’autre par une simple transposition. Les deuxièmes membres des
inégalités formant le système de contraintes de l’un de ces problèmes sont constitués par les
coefficients de la fonction linéaire prise de l’autre problème. Le sens des inégalités du système
de contraintes du problème I (minimisation) est “≤” tandis que dans le système de contraintes
du problème I’ (maximisation) toutes les inégalités sont de sens “≥ ”. La notion de dualité
est réciproque, ce qui signifie que si l’on le met le problème I’ sous une forme analogue au
problème I, alors le problème primal I sera un problème dual par rapport au problème I’. C’est
pourquoi les problèmes I et I’ sont appelés problèmes biduaux ou biconjugués. On montre que
Lmin = Tmax . On montre également que condition nécessaire et suffisante pour que la solution
de n’importe quel couple de problèmes duaux soit optimale consiste dans l’égalité L(x = T (y)),
où x et y sont les solutions admissibles des problèmes I et I’.

Exemple 0.2.1. 1. Le problème primal (I) est formulé comme suit: trouver les valeurs
non négatives (x1 , x2 ) sous conditions:
{
x1 + 2x2 ≥ 4
x1 − x2 ≥ −1

et de façon que la fonction linéaire L = 3x1 + 2x2 soit minimisée.


Le problème dual (I’): trouver les valeurs non négatives (y1 , y2 ) sous conditions:
{
y1 + y2 ≤ 3
2y1 − y2 ≥ 2

et de façon que la fonction linéaire T = 4y1 − y2 soit maximisée.

2. Résoudre ces deux problèmes.

10
0.2.2 Illustration de la dualité: problème d’entreprise
Considérons une entreprise:
- produisant r produits finis: fk = demande du produit k = 1, 2, ..., r
- utilisant s matières premières: hl = disponibilité de la matière première l = 1, 2, ..., s.
L’entreprise dispose de n procédés de production (activités):
i) xj = niveau d’utilisation du procédé j = 1, 2, ..., n
ii) cj = coût unitaire d’utilisation du procédé j = 1, 2, ..., n.
Le procédé j:
i) produit ekj unités de produit k = 1, 2, ..., r
ii) utilise glj unités de matière l = 1, 2, ..., s
pour chaque unité de son utilisation.
Problème de l’entreprise: déterminer le niveau d’utilisation de chaque procédé de pro-
duction pour satisfaire les demandes en produits sans excéder les disponibilités des matières
premières tout en minimisant le coût total de production.
Modèle mathématique:


min z = nj=1 cj xj
 ∑n
 ∑j=1 ekj xj ≥ fk k = 1, 2, ..., r (demandes)
n
s.c
 j=1 glj xj ≤ hl l = 1, 2, ..., s (disponibilités)
xj ≥ 0 j = 1, 2, ..., n
Un entrepreneur propose à l’entreprise d’acheter les quantités de ses matières premières
et de lui vendre les quantités de produits pour satisfaire les demandss.
Il doit énoncer (déterminer) des prix unitaires:
i) vk pour les produits k = 1, 2, ..., r
ii) wl pour les matières premières l = 1, 2, ..., s.


min z = nj=1 cj xj
 ∑n
 ∑j=1 ekj xj ≥ fk k = 1, 2, ..., r (demandes) (vk )
n
(P) s.c
 j=1 glj xj ≤ hl l = 1, 2, ..., s (disponibilités) (wl )
xj ≥ 0 j = 1, 2, ..., n
• L’entrepreneur doit déterminer des prix qui soient intéressants pour l’entreprise.
• Pour vérifier l’intérêt de faire affaire avec l’entrepreneur, l’entreprise doit vérifier que
pour chacun de ses procédés de production j, le coût d’acheter les unités de produits
fabriqués par une unité d’utilisation du procédé j en tenant compte de ce qu’elle reçoit
de l’entrepreneur pour les unités de matières qu’elle évite alors d’utiliser, que ce coût
n’excède pas le coût unitaire d’utilisation cj du procédé j:

r ∑
s
ekj vk − glj wl ≤ cj .
k=1 l=1

Problème de l’entrepreneur: maximiser son profit en s’assurant que ses prix restent in-
téressants pour l’entreprise. On obtient le modèle suivant:
Modèle mathématique:

11
∑ ∑
max p = rk=1 fk vk − sl=1 hl wl
 ∑ r ∑ s
 k=1 ekj vk − l=1 glj wl ≤ cj j = 1, 2, ..., n
(D) s.c v ≥ 0 k = 1, 2, ..., r
 k
wl ≥ 0 l = 1, 2, ..., s

0.3 Utilisation de Matlab pour la programmation linéaire

12
Chapitre 4: Programmation dynamique

Les problèmes étudiés dans ce chapitre sont tous associés à des situations où des décisions
doivent être prises de manière séquentielle, les conséquences de chaque décision n’étant pas
toujours parfaitement maîttrisées mais pouvant être anticipées jusqu’à un certain point avant
que la prochaine décision ne soit prise.
Le but recherché est la mininimisation d’un coût (ou la maximisation d’un profit) associé à
la suite de décisions retenues et à leurs conséquences.

0.4 Généralités en programmation dynamique


0.4.1 Problème de base
L’algorithme de programmation dynamique permet d’atteindre le meilleur compromis pos-
sible en ordonnant, à chaque étape, les décisions selon la somme d’un coût immédiat et de
l’espérance des coûts à venir, espérance obtenue en supposant que les décisions futures sont
prises de manière optimale.
Dans le cadre particulier de ce cours, les situations envisagées sont celles pour lesquelles
le nombre de décisions à prendre c-à-d la taille de l’horizon du problème, est fini. Dans ce
contexte, le modèle de base repose sur deux éléments essentiels:

1. le système dynamique est à temps discret,

2. la fonction coût est additive dans le temps.

Le système dynamique décrit l’évolution de l’état du processus au fil des N périodes et a la


forme générale:
xk+1 = fk (xk , uk , wk ), k = 1, 2, ..., N
où:

• k numérote les périodes (ou étapes) du processus,

• xk est l’état du système au début de la période k (avant la prise de décision) et résume


les informations sur le passé du système susceptibles d’influencer son évolution future,

• uk est la décision (ou le contrôle) devant être sélectionnée à la période k,

• wk est un paramètre aléatoire, parfois appelé pertubation ou bruit.

Une fonction coût gk (xk , uk , wk ) est associée à chaque période du système dynamique précé-
dent. Ces coûts s’additionnent au fil des périodes et, pour le processus complet, leur somme
a la forme
∑N
gN +1 (xN +1 ) + gk (xk , uk , wk )
k=1

où gN +1 (xN +1 représente un coût final dépendant de l’état atteint à la fin du processus de


décisions. Ce coût total dépend des pertubations wk et est généralement une variable aléatoire.

13
La fonction objectif du problème d’optimisation sera donc définie comme l’espérance des coûts

N
E[gN +1 (xN +1 ) + gk (xk , uk , wk )] (7)
k=1

où l’espérance est prise par rapport à la distribution conjointe des variables aléatoires wk .
L’optimisation de l’expression 7 a lieu, quant à elle, par rapport aux variables de décision
u1 , u2 , ..., uN .
Notons que tous les processus de décisions séquentielles ne font pas intervenir de paramètres
aléatoirs et, dans de nombreuses applications, l’état xk+1 est parfaitement déterminé lorsque
l’état courant xk et la décision uk sont connus. De telles situations s’insèrent, cependant,
sans problème dans le cadre actuel en considérant, pour chaque période du processus, une
pertubation artificielle ne pouvant prendre qu’une seule valeur. Par ailleurs, on distingue
deux types de systèmes de décision: les systèmes de décisions déterministes et les systèmes de
décisions stochastiques.

0.4.2 Exemples d’illustration


Exemple 0.4.1. : Problème de gestion de stocks
Considérons le problème du réapprovisionnement du stock d’un article pour les N périodes à
venir. Pour cela, définissons:
• xk le nombre d’unités disponibles au début de la période k,
• uk le nombre d’unités commandées (et reçues immédiatement) au début de la période k,
• wk la demande pendant la période k.
Nous supposons que les demandes w1 , w2 , ..., wN sont des variables aléatoires indépendantes,
suivant des lois de probabilités données. si, en cas de rupture de stocks, les demandes non
satisfaites sont mises en note jusqu’à la réception de nouvelles unités, le niveau du stock
évolue selon le processus à temps discret
xk+1 = fk (xk , uk , wk ) = xk + uk − wk
un niveau négatif représentant autant d’unités mises en note.
Les coûts de gestion de ce stock comprennent, pour chaque période k,
1. un coût de réapprovisionnement égal au produit d’un coût unitaire de commande c et de
la quantitée commandée uk ;
2. un coût r(xk , uk , wk ) représentant soit un coût de stockage associé aux unités en excès
en fin de période soit un coût de pénurie encouru pour les demandes n’ayant pu être
satisfaites pendant la période.
Si rN +1 désigne le montant final à payer lorsque le niveau du stock est égal à xN +1 unités à
la fin des N périodes, l’espérance des coûts totaux est

N
E[gN +1 (xN +1 ) + gk (xk , uk , wk )].
k=1

Pour un stock initial x1 donné, le problème consiste alors à choisir judicieusement les quantités
u1 , u2 , ..., uN de réapprovisionnement de manière à minimiser l’espérance des coûts totaux.

14
Exemple 0.4.2. : Problème du sac au dos
Considérons un assortiment comportant N périodes d’objets numérotés de 1 à N , chaque objet
de type k étant caractérisé par une valeur ck ≥ 0 entière et un volume ak > 0 également entier.
Le problème de la sélection, parmi cet assortiment, d’un sous-ensemble d’objets de valeur
maximale ne dépassent pas un volume global b donné est connu sous le nom de problème du
sac à dos et peut être modélisé par le programme linéaire en nombres entiers

max z = N k=1 ck uk
{ ∑N
s.c k=1 ak uk ≤ b
uk ≥ 0 entier, pour tout k
où uk représente le nombre d’objets de type k à inclure dans la sélection optimale.
Ce problème peut également être modélisé par un processus de décisions comportant N étapes.
Si ces dernières sont numérotées de 1 à N , la décision uk de l’étape k consiste à choisr le
nombre d’objets de type k à inclure dans la sélection.
L’état xk du système au début de l’étape k correspond, lui, à l’espace réservé pour les objets
de type k, k + 1, ..., N . Ainsi, si uk objets de type k sont sélectionnés, l’espace disponible à
l’étape k + 1 est
xk+1 = fk (xk , uk ) = xk − ak uk , k = 1, 2, ..., N
La
∑Nvaleur des objets∑sélectionnés à l’étape k gk (xk , uk ) = ck uk et le profit total est
N
k=1 gk (x k , u k ) = k=1 ck u k .
Le profit total doit être maximisé par rapport à u1 , u2 , ..., uN . Cependant, certaines décisions
ne sont pas envisageables car, à l’étape k, nous devons choisir un nombre entier et non négatif
d’objets, n’entraînant aucun dépassement du volume xk diponible. Ainsi, chaque décision uk
doit vérifier uk ≥ 0, entier et xk+1 = xk − ak uk ≥ 0 ou encore 0 ≤ uk ≤ E( xakk ) avec uk entier.

Remarque 0.4.1. Quelques éléments importants du problème de base:


a) Un système dynamique à temps discret décrivant l’évolution de la variable d’état au fil des
périodes.
b) Une variable de décision influençant l’évolution précédente. En général, les valeurs possibles
pour cette variable dépendent de l’état du système.
c) Une fonction coût additive de la forme donnée par la relation 7.
d) La solution du problème de base consiste en une suite de fonctions uk = µk (xk ), k =
1, 2, ..., N définissant, pour chaque période k et chaque état xk du système, la décision uk à
prendre.

On suppose dans la suite que:

• la variable d’état xk est un élément d’un ensemble Sk ;

• la variable de décision uk est un élément d’un ensemble Ck et est généralement contrainte


à prendre ses valeurs dans un sous-ensemble non vide Uk (xk ) ⊆ Ck qui peut dépendre
de xk ;

• le paramètre aléatoire wk est un élément d’un ensemble Dk et est caractérisé par une
distribution de probabilité Hk (.|xk , uk ) pouvant dépendre explicitement de xk et de uk
mais pas des pertubations précédentes w1 , ..., wk−1 .

15
0.4.3 Définition et Propriétés
Definition 0.4.1. • Une politique de décision est une suite de fonctions

π = {µ1 , µ2 , ..., µN }

où µk associe à chaque état xk ∈ Sk une décision uk = µk (xk ).

• Une politique de décision est admissible si:


µk (xk ) ∈ Uk (xk ), ∀xk ∈ Sk et ∀k ∈ {1, ..., N }.

• L’espérance du coût total associé à l’état initial x1 et à la politique π est


N
Jπ (x1 ) = E[gN +1 (xN +1 ) + gk (xk , µk (xk ), wk )]
k=1

où l’espérance est prise par rapport à la densité conjointe des variables wk .

• La politique π ∗ est optimale pour un état initial x1 si elle vérifie

Jπ∗ (x1 ) = min Jπ (x1 ).


π∈Π

Theorème 0.4.1. (Principe d’optimalité)


Soit π ∗ = {µ∗1 , µ∗2 , ..., µ∗N } une politique optimale pour un problème de décision sur N péri-
odes. Si, en mettant en oeuvre π ∗ , l’état xj est atteint à la période j, la politique partielle
{µ∗j , µ∗j+1 , ..., µ∗N } est optimal pour le sous-problème sur (N − j + 1) périodes, débutant à
l’étape j dans l’état xj et se terminant au début de l’étape N + 1.
En d’autres termes, la politique partielle {µ∗j , µ∗j+1 , ..., µ∗N } minimise l’espérance des coûts


N
E[gN +1 (xN +1 ) + gk (xk , µk (xk ), wk )]
k=1

Preuve: Exercice.
Le principe d’optimalité a des conséquences importantes. En particulier, il suggère qu’il est
possible de construire une politique optimale morceau par morceau. Dans un premier temps,
une solution optimale est calculée pour le sous-problème ne faisant intervenir que la dernière
étape du problème initial. Cette solution est ensuite utilisée pour déterminer une politique
optimale du sous-problème défini sur les deux dernières étapes. Le processus est répété jusqu’à
l’obtention d’une politique optimale pour le problème complet. D’où le théorème suivant:

Theorème 0.4.2. (Algorithme de programmation dynamique)


Soit un problème de décisions séquentielles sur N périodes. Pour tout état initial x1 , le coût op-
timal J ∗ (x1 ) est égal à J1 (x1 ), où la fonction J1 est donnée par la dernière étape de l’algorithme
suivant, qui procède en reculant dans le temps, de la période N à la période 1:

JN +1 (xN +1 ) := gN +1 (xN +1 ),

∀xN +1 ∈ SN +1 et pour k = N, ..., 2, 1

Jk (xk ) := min Ewk [gk (xk , uk , wk ) + Jk+1 (fk (xk , uk , wk ))] où xk+1 = fk (xk , uk , wk ). (8)
uk ∈Uk (xk )

16
A chaque itération k, l’espérance est prise par rapport à la distribution de probabilités Hk (.|xk , uk )
de wk .
Enfin, si µ∗ (xk ) := u∗k minimise la partie droite de l’équation (8) pour tout xk et tout k, la
politique π ∗ = {µ∗1 , µ∗2 , ..., µ∗N } est optimale.

Preuve: Exercice.

0.5 Application de l’algorithme de programmation dynamique


0.5.1 Cas d’un système déterministe
Exemple 0.5.1. Problème du sac au dos
L’on s’intéresse à la dernière étape du processus de décisions relatif au problème du sac au
dos. Le principe consiste à déterminer la manière optimale de remplir un sac de volume xN
en ne choisissant que des objets de type N . On note par JN (xN ) la valeur optimale de la
sélection. On obtient le modèle:

JN (x{N ) = maxuN {cN uN }


xN − aN uN ≥ 0
s.c
uN ≥ 0 entier

et la décision optimale est u∗N = µ∗N (xN ) = E( xaN


N
).
A l’étape N − 1, on doit décider du nombre d’objets de type N − 1 à inclure dans un sac de
volume xN . Si l’on inclue uN −1 objets de type N − 1, la capacité résiduelle du sac est:

xN = fN −1 (xN −1 , uN −1 ) = xN −1 − aN −1 uN −1 .

Ce volume est disponible pour des objets de type N et la valeur maximale d’une telle sélection
est donnée par la fonction JN (xN ) calculée à l’étape précédente.
La valeur optimale JN −1 (xN −1 ) d’un sac de volume xN −1 ne contenant que des objets de type
N − 1 et N s’obtient donc en résolvant le modèle:

JN −1 (xN −1 ) = maxuN −1 {cN −1 uN −1 + JN (xN )}


{
xN = xN −1 − aN −1 uN −1 ≥ 0
s.c
uN −1 ≥ 0 entier
Cette relation de récurrence doit être résolue pour tous les volumes possibles, à savoir xN −1 ∈
{0, 1, ..., b}, les valeurs optimales JN −1 (xN −1 ) , ainsi que les décisions µ∗N −1 (xN −1)=u∗N −1 as-
sociées étant stockées dans une table optimale.
De manière générale, à l’étape k, on doit déterminer la valeur maximale Jk (xk ) d’une sélec-
tion ne comportant que des objets de type k, k + 1, ..., N et ne dépassant pas le volume xk .
Cette valeur est solution du problème:

= maxuk {ck uk + Jk+1 (xk+1 )}


Jk (xk ) {
xk+1 = xk − ak uk ≥ 0
s.c
uk ≥ 0 entier

Ce problème doit être résolu pour xk ∈ {0, 1, ..., b} afin de construire la table optimale de
l’étape k contenant les valeurs Jk (xk ) et les décisions optimales µ∗k (xk ) = u∗k .
Finalement, à l’étape 1, la solution du problème initial s’obtient en résolvant le modèle:

17
{ maxu1 {c1 u1 + J2 (x2 )}
J1 (b) =
x2 = b − a1 u1 ≥ 0
s.c
u1 ≥ 0 entier
Exemple 0.5.2. Cas particulier où b = 6
On considère le tableau suivant relatif au problème du sac au dos avec un volume initial de 6:

Objet k 1 2 3
Valeur ck 5 3 7
Volume ak 3 2 4
Etape 3:
Seuls les objets de type 3 sont considérés. Si le volume disponible est x3 , alors la valeur opti-
male d’un chargement est:

J3 (x{3 ) = maxu3 {c3 u3 }


x3 − a3 u3 ≥ 0
s.c
u3 ≥ 0 entier
c’est-à-dire:

J3 (x{3 ) = maxu3 {7u3 }


x3 − 4u3 ≥ 0
s.c
u3 ≥ 0 entier
et les décisions optimales sont u∗3 = 0 si x3 = 0, 1, 2 ou 3 et u∗3 = 1 si x3 = 4, 5 ou 6. La table
optimale de l’étape 3 est donc:
x3 0 1 2 3 4 5 6
J3 (x3 ) 0 0 0 0 7 7 7
µ∗3 (x3 ) 0 0 0 0 1 1 1
Etape 2:
Le volume disponible x2 peut être occupé par des objets 2 ou 3 mais la décision de l’étape ne
concerne que le nombre de type 2 à sélectionner. On a:

J2 (x2 ){= maxu2 {c2 u2 + J3 (x3 )}


x3 = x2 − a2 u2 ≥ 0
s.c
u2 ≥ 0 entier
c’est-à-dire:

J2 (x2 ){= maxu2 {3u2 + J3 (x3 )}


x3 = x2 − 2u2 ≥ 0
s.c
u2 ≥ 0 entier
Pour x2 = 0 ou 1, la seule décision possible est u2 = 0 car le volume disponible n’est pas
suffisant pour accomoder ne serait-ce qu’un objet 2. Ainsi, J2 (x2 ) = J3 (x3 ) = 0.

18
Pour x2 = 2, on a:

J2 (2) = max {3u2 + J3 (x2 − 2u2 )}


x2 ∈{0,1}

= max{3 × 0 + J3 (2), 3 × 1 + J3 (0)}


= max{0 + 0, 3 + 0}
=3

La décision optimale est donc µ∗2 (2) = u∗2 = 1. La situation est identique pour x2 = 3 car
J3 (3) = J3 (2) = 0. Pour x2 = 4, les décisions possibles sont u2 = 0, 1 ou 2 et:

J2 (4) = max {3u2 + J3 (x2 − 2u2 )}


x2 ∈{0,1,2}

= max{3 × 0 + J3 (4), 3 × 1 + J3 (2), 3 × 2 + J3 (0)}


= max{0 + 7, 3 + 0, 6 + 0}
=7

Ainsi, µ∗2 (4) = u∗2 = 0 et cette valeur ne change pas pour x2 = 5. Finalement, pour x2 = 6, le
problème est:

J2 (4) = max {3u2 + J3 (x2 − 2u2 )}


x2 ∈{0,1,2,3}

= max{3 × 0 + J3 (6), 3 × 1 + J3 (4), 3 × 2 + J3 (2), 3 × 3 + J3 (0)}


= max{0 + 7, 3 + 7, 6 + 0, 9 + 0}
= 10

La table optimale de l’étape 2 est donc:


x2 0 1 2 3 4 5 6
J2 (x2 ) 0 0 3 3 7 7 10
µ∗2 (x2 ) 0 0 1 1 0 0 1
Etape 1:
La table complète de cette étape ne nous intéresse pas car la solution du problème de départ
correspond à l’état x1 = b = 6. L’unique problème à résoudre est:

{ maxu1 {5u1 + J2 (x2 )}


J1 (6) =
x2 = 6 − 3u1 ≥ 0
s.c
u1 ≥ 0 entier
c’est-à-dire:

J1 (6) = max {5u1 + J2 (6 − 3u1 )}


x1 ∈{0,1,2}

= max{5 × 0 + J2 (6), 5 × 1 + J2 (3), 5 × 2 + J2 (0)}


= max{0 + 10, 5 + 3, 10 + 0}
= 10

Il existe deux décisions optimales: µ∗1 (6) = 0 ou 2. Pour chacune d’elles, on peut reconstruire
la solution optimale en consultant les politiques stockées dans les tables des étapes 2 et 3.

19
Lecture de la solution optimale:
Pour u∗1 = 0, l’état du système à l’étape 2, le volume encore disponible, est x2 = 6 − 3u∗1 = 6
et la décision optimale pour cet état est u∗2 = µ∗2 (6) = 1. Le volume restant après une telle
sélection est x3 = x2 − 2u∗2 = 6 − 2 × 1 = 4 et u∗3 = µ∗3 (4) = 1. La suite de décisions est donc
{0, 1, 1} et correspond à un chargement formé d’un objet 2 et d’un objet 3. La valeur de cette
solution est égale à 3 + 7 = 10, ce qui correspond bien à J1 (6).
Pour u∗1 = 2, le volume disponible à l’étape 2 n’est plus que de x2 = 6 − 3u∗1 = 6 − 3 × 2 = 0 et
u∗2 = µ∗2 (0) = 0. De même, x3 = x2 − 2u∗2 = 0 et et u∗3 = µ∗3 (0) = 0. La suite de décisions est,
cette fois, {2, 0, 0} et correspond à un chargement formé de deux objets de type 1. La valeur
de la sélection n’a pas changé et est toujours égale à 2 × 5 = 10.

0.5.2 Cas d’un système stochastique


Exemple 0.5.3. Problème de gestion de stocks
On rappelle les différentes notations du problème de gestion de stocks:

• xk le nombre d’unités disponibles au début de la période k,

• uk le nombre d’unités commandées (et reçues immédiatement) au début de la période k,

• wk la demande pendant la période k.

On suppose que les demandes w1 , w2 , ..., wN sont des variables aléatoires indépendantes et
identiquement distribuées. Si l’on considère que les demandes ne pouvant être satisfaites im-
médiatement pendant la période k correspondent à des ventes perdues, l’évolution du niveau
du stock est:

xk+1 = fk (xk , uk , wk ) = max{xk + uk − wk , 0} = [xk + uk − wk ]+

On suppose en outre que la capacité maximale du stock est égale à C. Ainsi, pour toute période
k, l’ensemble des valeurs possibles pour xk est Sk = {0, 1, ..., C} et les quantités de commande
envisageables pour un niveau xk du stock sont Uk (xk ) = {0, 1, ..., C − xk }.
Les coûts associés à ce système comprennent:

1. un coût de réapprovisionnement c(uk ) de la forme c(uk ) = Kδ(uk ) + cuk où K est un


coût fixe de commande, δ(uk ) la fonction valant 0 si uk est nul et 1 dans tous les autres
cas et c un coût unitaire de commande;

2. un coût de gestion r(xk , uk , wk ) de la forme:

r(xk , uk , wk ) = h max{xk + uk − wk , 0} − p min{xk + uk − wk , 0}


= h[xk + uk − wk ]+ + p[xk + uk − wk ]−

où h est un coût unitaire de stockage et p un coût unitaire de pénurie.

Si le coût terminal gN +1 (xN +1 ) est nul quel que soit le stock xN +1 restant à la fin de la
dernière période de planification, l’espérance des coûts totaux, à minimiser, est:


N
E[ (c(uk ) + r(xk , uk , wk ))].
k=1

20
Calculons la politique optimale de réapprovisionnement pour un problème sur 3 périodes et
une capacite maximale du stock C = 3.
Les coûts de réapprovisionnement et de gestion deviennent respectivement c(uk ) = δ(uk )+ 32 uk
et r(xk , uk , wk ) = [xk + uk − wk ]+ + 3[xk + uk − wk ]− . La loi de probabilités de la demande
est:
1 1 3 1
P [wk = 0] = , P [wk = 1] = , P [wk = 2] = , P [wk = 3] =
10 5 5 10
pour k = 1, 2, 3.
Période 4:
Le coût terminal étant nul, on obtient: J4 (x4 ) = g4 (x4 ) = 0 avec x4 = 0, 1, 2, 3.
Période 3:
L’équation qui régit cette étape est:

J3 (x3 ) = min Ew3 [c(u3 ) + r(x3 , u3 , w3 ) + J4 (f3 (x3 , u3 , w3 ))]


u3 ∈U3 (x3 )
3
= min Ew3 [δ(u3 ) + u3 + [x3 + u3 − w3 ]+ + 3[x3 + u3 − w3 ]− ]
u3 ∈{0,...,3−x3 } 2

Pour x3 = 0, les décisions possibles sont u3 = 0, 1, 2 ou 3. On obtient successivement pour


l’espérance précédente:
• u3 = 0: E[.] = 1
5 ×3+ 3
5 ×3×2+ 1
10 ×3×3= 51
10 = 5, 1

• u3 = 1: E[.] = 1 + 1, 5 + 1
10 ×1+ 3
5 ×3+ 1
10 × 3 × 2 = 2, 5 + 25
10 =5

• u3 = 2: E[.] = 1 + 3 + 1
10 ×2+ 1
5 ×1+ 1
10 ×3=4+ 7
10 = 4, 7

• u3 = 3: E[.] = 1 + 4, 5 + 1
10 ×3+ 1
5 ×2+ 3
5 × 1 = 5, 5 + 13
10 = 6, 8.
L’espérance des coûts pour la troisième période, lorsque le niveau du stock avant commande est
nul, est donnée par le minimum des valeurs ci-dessus. On obtient J3 (0) = 4, 7 et la quantité
à commander est µ∗3 (0) = 2.
Pour x3 = 1, l’ensemble des décisions est U3 (1) = {0, 1, 2} et on obtient:
• u3 = 0: E[.] = 1
10 ×1+ 3
5 ×3+ 1
10 ×3×2= 25
10 = 2, 5

• u3 = 1: E[.] = 1 + 1, 5 + 1
10 ×2+ 1
5 ×1+ 1
10 × 3 = 2, 5 + 7
10 = 3, 2

• u3 = 2: E[.] = 1 + 3 + 1
10 ×3+ 1
5 ×2+ 3
5 ×1=4+ 13
10 = 5, 3.
Ainsi, J3 (1) = 2, 5 et la décision optimale est de ne rien commander.
Seules deux quantités de réapprovisionnement sont admissibles lorsque x3 = 2. Il vient:
• u3 = 0: E[.] = 1
10 ×2+ 1
5 ×1+ 1
10 ×3= 7
10 = 0, 7

• u3 = 1: E[.] = 1 + 1, 5 + 1
10 ×3+ 1
5 ×2+ 3
5 × 1 = 2, 5 + 13
10 = 3, 8.
Le minimum J3 (2) = 0, 7 et µ∗3 (2) = 0.
Finalement, pour x3 = 3, la seule décision possible est de ne rien commander. L’espérance
des coûts est égale à:
1 1 3 13
J3 (3) = ×3+ ×2+ ×1= = 1, 3.
10 5 5 10

21
Période 2:
Reculant d’une période, l’équation de récurrence devient:
J2 (x2 ) = min Ew2 [c(u2 ) + r(x2 , u2 , w2 ) + J3 (f2 (x2 , u2 , w2 ))]
u2 ∈U2 (x2 )
3
= min Ew2 [δ(u2 ) + u2 + [x2 + u2 − w2 ]+ + 3[x2 + u2 − w2 ]− + J3 ([x2 , u2 , w2 ]+ )]
u2 ∈{0,...,3−x2 } 2
Pour x2 = 0, les espérances des coûts pour les quatre décisions possibles u3 = 0, 1, 2 ou 3 sont:
1 1 3 1
E[.] = (J3 (0)) + (3 + J3 (0)) + (6 + J3 (0)) + (9 + J3 (0))
10 5 5 10
1 47 1 47 3 47 1 47
= ( ) + (3 + ) + (6 + ) + (9 + )
10 10 5 10 5 10 10 10
98
=
10
= 9, 8

1 1 3 1
E[.] = 1 + 1, 5 + (1 + J3 (1)) + (J3 (0)) + (3 + J3 (0)) + (6 + J3 (0))
10 5 5 10
1 25 1 47 3 47 1 47
= 2, 5 + (1 + ) + ( ) + (3 + ) + (6 + )
10 10 5 10 5 10 10 10
948
=
100
= 9, 48

1 1 3 1
E[.] = 1 + 3 + (2 + J3 (2)) + (1 + J3 (1)) + (J3 (0)) + (3 + J3 (0))
10 5 5 10
1 7 1 25 3 47 1 47
= 4 + (2 + ) + (1 + ) + ( ) + (3 + )
10 10 5 10 5 10 10 10
856
=
100
= 8, 56

1 1 3 1
E[.] = 1 + 4, 5 + (3 + J3 (3)) + (2 + J3 (2)) + (1 + J3 (1)) + (J3 (0))
10 5 5 10
1 13 1 7 3 25 1 47
= 5, 5 + (3 + ) + (2 + ) + (1 + ) + ( )
10 10 5 10 5 10 10 10
904
=
100
= 9, 04
Le minimum est J2 (0) = 8, 56 et la décision optimale correspondante est µ∗2 (0) = 2.
Si le niveau du stock avant commande est x2 = 1, il vient successivement pour u2 = 0, 1 et 2:
1 1 3 1
E[.] = (1 + J3 (1)) + (J3 (0)) + (3 + J3 (0)) + (6 + J3 (0))
10 5 5 10
698
=
100
= 6, 98

22
1 1 3 1
E[.] = 1 + 1, 5 + (2 + J3 (2)) + (1 + J3 (1)) + (J3 (0)) + (3 + J3 (0))
10 5 5 10
706
=
100
= 7, 06

1 1 3 1
E[.] = 1 + 3 + (3 + J3 (3)) + (2 + J3 (2)) + (1 + J3 (1)) + (J3 (0))
10 5 5 10
754
=
100
= 7, 54

On obtient J2 (1) = 6, 98 et µ∗2 (1) = 0.


Pour x2 = 2, on obtient successivement pour u2 = 0, 1 :
1 1 3 1
E[.] = (2 + J3 (2)) + (1 + J3 (1)) + (J3 (0)) + (3 + J3 (0))
10 5 5 10
456
=
100
= 4, 56

1 1 3 1
E[.] = 1 + 1, 5 + (3 + J3 (3)) + (2 + J3 (2)) + (1 + J3 (1)) + (J3 (0))
10 5 5 10
604
=
100
= 6, 04

et J2 (2) = 4, 56, la décision optimale étant µ∗2 (2) = 0.


Finalement, pour x2 = 3, nous avons µ∗2 (3) = 0 (c’est la seule décision admissible) et:
1 1 3 1
J2 (3) = (3 + J3 (3)) + (2 + J3 (2)) + (1 + J3 (1)) + (J3 (0))
10 5 5 10
354
=
100
= 3, 54

Période 1:
Reculant encore d’une période, l’équation de récurrence devient:

J1 (x1 ) = min Ew1 [c(u1 ) + r(x1 , u1 , w1 ) + J2 (f1 (x1 , u1 , w1 ))]


u1 ∈U1 (x1 )
3
= min Ew1 [δ(u1 ) + u1 + [x1 + u1 − w1 ]+ + 3[x1 + u1 − w1 ]− + J2 ([x1 , u1 , w1 ]+ )]
u1 ∈{0,...,3−x1 } 2
Afin d’obtenir une politique optimale de réapprovisionnement quel que soit le niveau initial du
stock, cette équation doit être résolue pour x1 = 0, 1, 2 et 3.
Par exemple, lorsque x1 = 1, on obtient successivement pour u1 = 0, 1, 2:
1 1 3 1
E[.] = (1 + J2 (1)) + (J2 (0)) + (3 + J2 (0)) + (6 + J2 (0))
10 5 5 10
= 10, 902

23
1 1 3 1
E[.] = 1 + 1, 5 + (2 + J2 (2)) + (1 + J2 (1)) + (J2 (0)) + (3 + J2 (0))
10 5 5 10
= 11, 044

1 1 3 1
E[.] = 1 + 3 + (3 + J2 (3)) + (2 + J2 (2)) + (1 + J2 (1)) + (J2 (0))
10 5 5 10
= 11, 61

et l’attitude à adopter consiste à ne rien commander, l’espérance des coûts pour les trois
périodes étant alors J1 (1) = 10, 902. La politique optimale est donnée par les trois tableaux
suivants:
Période 1:
x1 µ∗1 (x1 ) J1 (x1 )
0 2 12,544
1 0 10,902
2 0 8,544
3 0 7,61
Période 2:
x2 µ∗2 (x2 ) J2 (x2 )
0 2 8,56
1 0 6,98
2 0 4,56
3 0 3,54
Période 3:
x3 µ∗3 (x3 ) J3 (x3 )
0 2 4,7
1 0 2,5
2 0 0,7
3 0 1,3
On remarque qu’à chaque périodel, la stratégie optimale de commande est la même: si le stock
est vide, deux unités sont commandées, dans tous les autres cas, aucun réapprovisionnement ne
prend place. Une telle politique de gestion correspond à une politique (s, S) avec les paramètres
s = 1 et S = 2. Cette règle stipule que:

1. si le niveau du stock en début de période est inférieur à s, commander la quantité néces-


saire pour avoir S unités dans le stock;

2. si le niveau est supérieur ou égal à s, ne rien commander.

24

Vous aimerez peut-être aussi